@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 访问