java - jackson-mapper 版本 1.9.12 EnumDeserializer 问题

标签 java javascript json spring-mvc jackson

我正在尝试使用 Jackson ObjectMapper.readValue(String,Class) API 将字符串映射到枚举对象,问题是让我们说我的 json 字符串包含一个带有操作枚举的任务对象,如下所示

公共(public)枚举操作{

@XmlEnumValue("Add")
ADD("Add"),
@XmlEnumValue("Amend")
AMEND("Amend"),
@XmlEnumValue("Delete")
DELETE("Delete"),
@XmlEnumValue("Pending")
PENDING("Pending");
private final String value;

Action(String v) {
    value = v;
}

public String value() {
    return value;
}

public static Action fromValue(String v) {
    for (Action c: Action.values()) {
        if (c.value.equals(v)) {
            return c;
        }
    }
    throw new IllegalArgumentException(v);
}

}

并且 jason 字符串将像这样“{”action”:“Add”}”然后 ObjectMapper.readValue(jsonString, Task.Class) 抛出

添加操作的 org.codehaus.jackson.map.deser.StdDeserializationContext.weirdStringException(StdDeserializationContext.java:243) 因为它无法转换此枚举。

我尝试添加自定义反序列化器,但 EnumDeserializer 无论如何都会被调用。有什么想法吗?

所有对象都是 JAXB 生成的,因此不可能进行注释。

感谢您的帮助

最佳答案

你尝试过吗:

new ObjectMapper().setAnnotationIntrospector(new JaxbAnnotationIntrospector()).readValue()

关于java - jackson-mapper 版本 1.9.12 EnumDeserializer 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16090527/

相关文章:

java - 无需平面的 ARCore 对象跟踪

javascript - 如何使用 javascript/jquery 获取 iframe 的 URL 的 anchor 属性?

javascript - 使用不同的键迭代 Json

javascript - 向 Weebly 添加随机页面按钮

javascript - 在没有 jQuery 的情况下连接两个 JSON 对象

c++ - Boost ptree 顶级数组

javascript - 使用 jQuery 遍历 JSON 数组

java - 无法将时间写入数据库,只能写入日期。时间被忽略

java - 用于在实体中存储 SQL ID 的选项

java - 如何计算快速排序中的比较和交换?