user1224036
user1224036

Reputation: 1008

jackson-mapper version 1.9.12 EnumDeserializer issue

i am trying to map String to enum Object using Jackson ObjectMapper.readValue(String,Class) API, problem is Lets SAY my json string contains a Task Object with Action enum as below

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);
}

}

and the jason string will be like this "{"action":"Add"}" then ObjectMapper.readValue(jsonString, Task.Class) throws

org.codehaus.jackson.map.deser.StdDeserializationContext.weirdStringException(StdDeserializationContext.java:243) for Action Add because it cant convert this Enum.

I tried adding custom Desiserializer, But EnumDeserializer getting called anyway. any ideas?

All objects are JAXB generated, so annotations not possible.

Thanks for the help

Upvotes: 0

Views: 550

Answers (1)

HiJon89
HiJon89

Reputation: 911

Have you tried:

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

Upvotes: 1

Related Questions