我有一个从API返回的JSON,所以我无法改变它,问题是其中一个属性有时是一个空字符串,有时它是一个Object。
有时当我调用它时,foo是一个空字符串
{
"foo" : "",
"bar" : 0
}
而在其他时候它是一个对象
{
"foo" : {"baz": 11},
"bar" : 2
}
有没有办法用杰克逊做到这一点?到目前为止,我发现的唯一方法是编写自定义解串器/串行器对。我对这种方法的问题是,这是一个深度嵌套的JSON结构,并且违规属性接近根...
答案 0 :(得分:5)
是的,将ObjectMapper
配置为接受空字符串作为null
对象。
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);
以上是杰克逊2+。杰克逊1有类似的配置,但configure
有点不同。