@JsonProperty 在枚举中被忽略
@JsonProperty being ignored in enum
我有一个简单的枚举,它具有 OK 和 FAULT 属性。当使用 @Json属性 注释 return 将其作为 Json 对象时,我试图 return 小写的值。首先我认为是因为我将 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();
}
}
您需要检查您的 Jackson 版本。您的方式仅适用于 Jackson 2.7.2 或更新版本。请参考 When is the @JsonProperty property used and what is it used for? 。希望能帮到你。
我有一个简单的枚举,它具有 OK 和 FAULT 属性。当使用 @Json属性 注释 return 将其作为 Json 对象时,我试图 return 小写的值。首先我认为是因为我将 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();
}
}
您需要检查您的 Jackson 版本。您的方式仅适用于 Jackson 2.7.2 或更新版本。请参考 When is the @JsonProperty property used and what is it used for? 。希望能帮到你。