@JsonProperty在枚举中被忽略

时间:2019-05-30 21:09:33

标签: java jax-rs jackson2

我有一个简单的枚举,必须具有属性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();
    }
}

1 个答案:

答案 0 :(得分:1)

您需要检查您的Jackson版本。您的方式仅适用于Jackson 2.7.2或更高版本。请参阅When is the @JsonProperty property used and what is it used for?。希望能有所帮助。