@JsonProperty 在枚举中被忽略 [重复]

Posted

技术标签:

【中文标题】@JsonProperty 在枚举中被忽略 [重复]【英文标题】:@JsonProperty being ignored in enum [duplicate] 【发布时间】:2019-10-16 13:09:26 【问题描述】:

我有一个简单的枚举,它具有 OK 和 FAULT 属性。当使用@JsonProperty 注释将其作为Json 对象返回时,我试图以小写形式返回该值。首先我认为是因为我将 java.xmlbind.annotation 与 com.fasterxml 混合是问题所在,但删除 java.xmlbind 后它仍然无法正常工作。

使用此枚举的对象在 json 请求中始终显示 OK 或 FAULT,而不是像请求 XML 时那样显示 ok 和错误。

使用杰克逊 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】:

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

【讨论】:

谢谢,当我阅读 API 文档时,我意识到我正在加载 Jackson 2.5,一旦我升级它,它就可以工作了。

以上是关于@JsonProperty 在枚举中被忽略 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

.NET Core 中的强类型配置忽略 JsonProperty 属性

Sonarqube 自定义规则 - 字符串文字不应重复,在记录器的上下文中被忽略

在 Spring Boot + Spring Data Rest 中反序列化时忽略带有 @JsonProperty 的字段

忽略单元测试的 Jackon JsonProperty 访问

序列化json时如何忽略JsonProperty(PropertyName = "someName")?

Jackson属性名转换+属性忽略