說我有下面的類:@JsonUnwrapped的傑克遜反序列化等價物是什麼?
public class Parent {
public int age;
@JsonUnwrapped
public Name name;
}
生產JSON:
{
"age" : 18,
"first" : "Joey",
"last" : "Sixpack"
}
如何反序列化這回父類?我可以用@JsonCreator
@JsonCreator
public Parent(Map<String,String> jsonMap) {
age = jsonMap.get("age");
name = new Name(jsonMap.get("first"), jsonMap.get("last"));
}
但是,這也有效地增加了@JsonIgnoreProperties(ignoreUnknown=true)
父類,所有屬性映射到這裏。所以如果你想讓未知的JSON字段拋出異常,你必須自己去做。另外,如果地圖值可能不是字符串,你必須做一些手動類型檢查和轉換。傑克遜有辦法自動處理這種情況嗎?
編輯: 我可能是瘋了,但其實這顯示,儘管從來沒有在文件中被明確提及的工作:http://fasterxml.github.io/jackson-annotations/javadoc/2.2.0/com/fasterxml/jackson/annotation/JsonUnwrapped.html
我敢肯定它沒有爲我工作之前。不過,當需要定製邏輯來反序列化未包裝的多態類型時,建議的@JsonCreator方法可能更受歡迎。
你確定'@ JsonUnwrapped'正在爲反序列化工作嗎?我試過了,當我嘗試反序列化扁平化的JSON時,出現'Could not read JSON:Unrecognized field ...'錯誤。 –