java - @JsonProperty 在枚举中被忽略

标签 java jax-rs jackson2

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

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

使用 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? 。希望能帮到您。

关于java - @JsonProperty 在枚举中被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56385678/

相关文章:

java - 使用 Swagger 记录现有的 JAX-RS 实现而不对其进行注释

java - 存在时抛出 Jackson UnrecognizedPropertyException

java - jackson 错误: Cannot deserialize instance of `java.lang.String` out of START_ARRAY token

java - 这个简单的java程序的结果是什么?

java - 关于泛型和集合的核心java

java - 如何调用依赖的rest服务

java - 警告 RESTEASY002145 : NoClassDefFoundError

java - SAX 解析异常 : Content is not allowed in prolog

java - 按引用实体中的第一项对 JPA 存储库响应进行排序

java - 如何获取 Jersey JaxRS 中的所有查询参数?