2011-02-18 178 views
3

我必须使用jackson将json转换为对象。类是这样的:使用jackson将json转换为对象

class Country { 
    int a; 
    int b; 
} 

并且json我得到:

{"country":{"a":1,"b":1}} 

但是,当我试图反序列化这个它给我下面的错误

org.codehaus.jackson.map.JsonMappingException: Unrecognized field "country"  

如果我删除“国家“,我能够得到这个对象。

有没有什么办法可以让杰克逊忽略json字符串中的“country”?

在此先感谢。

+0

将很酷很酷的一些代码示例为您找到一个找到“使用杰克逊转换json到对象” – 2011-03-24 01:57:55

+0

@castanho转换json到对象您需要创建一个ObjectMapper对象ObjectMapper objectMapper = new ObjectMapper();然后使用readValue函数转换为对象A a =(A)objectMapper.readValue(jsonString,A.class) – parbi 2011-04-26 06:52:22

回答

4

这是Jackson的正确行为,Country对象的实际json表示应该没有顶级国家。如果你的JSON绝对有顶级的国家属性,更清洁的方法是使用包装国家类是这样的:

class WrapperCountry { 
    Country country; 
} 

这样的JSON表示要正确反序列化到WrapperCountry对象,你可以从检索国家那。