使用Jackson将JSON转换为对象

3

我需要使用jackson将json转换为对象。类似这样:

class Country {  
    int a;  
    int b;  
}  

我得到的JSON数据如下:

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

但是当我尝试反序列化它时,会出现以下错误。
org.codehaus.jackson.map.JsonMappingException: Unrecognized field "country"    

如果我删除"country",我就能得到这个对象。
有没有办法告诉Jackson忽略JSON字符串中的"country"?
提前感谢。

在您的帖子中添加一些代码示例,以便为寻找“使用Jackson将JSON转换为对象”的人提供帮助,这将是很酷的。 - rafa.ferreira
@castanho 如果要将json转换为对象,您需要创建一个ObjectMapper对象。ObjectMapper objectMapper = new ObjectMapper(); 然后使用readValue函数将其转换为对象。A a = (A) objectMapper.readValue(jsonString, A.class) - parbi
1个回答

4

这是Jackson的正确行为,Country对象的实际JSON表示应该没有顶级国家。如果您的JSON绝对具有顶级国家属性,则更清晰的方法是使用包装器Country类,如下所示:

class WrapperCountry {  
   Country country;
}

这样,JSON 表示应正确反序列化为 WrapperCountry 对象,然后您可以从中检索国家。

嗯,我只是想知道是否有其他的方式可以通过注释来实现。我认为我会继续采用这种方法。谢谢。 - parbi
1
你可能能够找出是什么添加了那个额外的“country”属性(以及包装对象):Jackson默认情况下不会这样做(尽管在1.7版本中有一种设置可以添加它),所以很可能是其他框架。也许可以更改框架的设置,以防止添加这个额外级别。 - StaxMan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接