jackson-mapper版本1.9.12 EnumDeserializer问题

时间:2013-04-18 18:30:05

标签: java javascript json spring-mvc jackson

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

public enum Action {

@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)for Action Add,因为它无法转换此枚举。

我尝试添加自定义的Desiserializer,但无论如何都要调用EnumDeserializer。任何想法?

所有对象都是JAXB生成的,因此无法进行注释。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

你试过了吗?

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