@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? 。希望能帮到你。