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

Spa*_*ade 0 java json jackson

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

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

{ 
 "foo" : "",
 "bar" : 0
}
Run Code Online (Sandbox Code Playgroud)

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

{
 "foo" : {"baz": 11},
 "bar" : 2
}
Run Code Online (Sandbox Code Playgroud)

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

Sot*_*lis 5

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

ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);
Run Code Online (Sandbox Code Playgroud)

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