我有一个简单的枚举,必须具有属性OK和FAULT。我试图通过使用@JsonProperty批注将其作为Json Object返回时,以小写形式返回该值。首先,我以为是因为我将java.xmlbind.annotation与com.fasterxml混在一起是问题所在,但是在删除java.xmlbind之后仍然无法正常工作。
使用此枚举的对象在json请求中始终显示OK或FAULT,而不是请求XML时的OK和Fault。
使用Jackson 2.5.x
任何见解或建议将不胜感激。
import javax.xml.bind.annotation.XmlEnum;
import javax.xml.bind.annotation.XmlEnumValue;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
*
*/
@XmlEnum
public enum RequestStatusType {
/**
* Generic server A-OK ;)
*/
@XmlEnumValue(value="ok")
@JsonProperty(value="ok")
OK,
/**
* Generic unknown server fault
*/
@XmlEnumValue(value="fault")
@JsonProperty(value="fault")
FAULT;
/**
* Returns a RequestStatusType based on the string passed in
* @param requestStatusType the requestStatusType to get
*/
public static RequestStatusType getRequestStatus (String requestStatusTypeStr) {
try {
return valueOf( requestStatusTypeStr.toUpperCase() );
} catch (Exception e) {
return null;
}
}
/* (non-Javadoc)
* @see java.lang.Enum#toString()
*/
@Override
public String toString() {
return super.toString().toLowerCase();
}
}
答案 0 :(得分:1)
您需要检查您的Jackson版本。您的方式仅适用于Jackson 2.7.2或更高版本。请参阅When is the @JsonProperty property used and what is it used for?。希望能有所帮助。