2013-04-18 44 views
0

我想映射字符串枚舉對象使用傑克遜ObjectMapper.readValue(字符串,類)的API,問題是讓我說我​​的json字符串包含任務對象與操作枚舉如下jackson-mapper版本1.9.12 EnumDeserializer問題

公共枚舉行動{

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

}

和賈森字符串會是這樣 「{」 行動 「:」 添加 「}」,然後ObjectMapper.readValue(jsonString,Task.Class)拋出

org.codehaus.jackson.map.deser.StdDeserializationContext.weirdStringException(StdDeserializationContext.java:243)for Action Add因爲它不能轉換這個枚舉。

我試着添加自定義的Desiserializer,但EnumDeserializer反正被調用。有任何想法嗎?

所有對象都是JAXB生成的,所以註釋不可能。

感謝您的幫助

回答

1

你試過:

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

謝謝,它解決了問題 – user1224036

+0

那麼它實際上回答了這個問題.....尷尬。 – HiJon89