如何(de)序列化JSON,其中字段是使用Jackson的String或Object

时间:2014-03-31 14:50:49

标签: java json jackson

我有一个从API返回的JSON,所以我无法改变它,问题是其中一个属性有时是一个空字符串,有时它是一个Object。

有时当我调用它时,foo是一个空字符串

{ 
 "foo" : "",
 "bar" : 0
}

而在其他时候它是一个对象

{
 "foo" : {"baz": 11},
 "bar" : 2
}

有没有办法用杰克逊做到这一点?到目前为止,我发现的唯一方法是编写自定义解串器/串行器对。我对这种方法的问题是,这是一个深度嵌套的JSON结构,并且违规属性接近根...

1 个答案:

答案 0 :(得分:5)

是的,将ObjectMapper配置为接受空字符串作为null对象。

ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);

以上是杰克逊2+。杰克逊1有类似的配置,但configure有点不同。