2014-03-31 21 views
0

我有一個從API返回的JSON,所以我無法更改它,問題在於有時某個屬性有時是一個空字符串,有時它是一個對象。如何使用傑克遜序列化字段爲字符串或對象的JSON

有時,當我把它叫做foo是一個空字符串

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

,並在其他時候,它是一個對象

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

有沒有辦法做到這一點使用傑克遜?到目前爲止我發現的唯一方法是編寫一個自定義的解串器/串行器對。我使用這種方法的問題是,這是一種深度嵌套的JSON結構,並且該違規屬性接近根...

回答

4

是的,將ObjectMapper配置爲接受空字符串作爲null對象。

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

以上是傑克遜2+。 Jackson 1有類似的配置,但configure有一點不同。

+0

Thnx爲一個很好的答案。對於那些仍在使用Jackson 1+的人來說,解決方案是添加'mapper.configure(Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT,true);'而不是。 – Spade

相關問題