[英]Convert json array to java object with different object element in array using jackson
[英]Spring Jackson convert json object to java array
我有一個像下面的json:
{“ key”:{“ a”:“ aValue”}}
“鍵”可以包含json對象以及json數組。 我創建了以下java對象來映射此json:
Class Output {
private List<DummyObject> key;
// setter, getting ommited
}
Class DummyObject {
private String a;
}
所以,我想如果json是
{“ key”:[{“ a”:“ val1”},{“ a”:“ val2”}]}
Output類的“ key”屬性應包含2個對象的列表,並且當json為
{“ key”:{“ a”:“ val1”}}
“鍵”應僅包含1個對象的列表。
我嘗試使用反序列化器,但是它不起作用。 另外,我也不想自己反序列化DummyObject
。
嘗試啟用Jackson的反序列化功能ACCEPT_SINGLE_VALUE_AS_ARRAY 。
final ObjectMapper mapper = new ObjectMapper()
.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
考慮到{"key":[{"a":"val1"},{"a":"val2"}]}
問題不在輸出模型中;
Class Output {
private List<DummyObject> key;
// setter, getting ommited
}
由於此key
將該key
表示為json數組。
但是您可能想要更新DummyObject:
Class DummyObject {
private String a;
}
至
Class DummyObject {
private Map<String,String> a;
}
由於{“ a”:“ val1”}不是DummyObject
甚至String a
的有效表示。
另外,如@tima所指出的,對於“鍵”的JSONArray長度不同,您必須了解如何使Jackson將單個JSON對象解釋為具有一個元素的數組
您問題的最后一句:
另外,我也不想自己反序列化DummyObject。
您可以嘗試更新輸出模型(從性能角度來看不確定是否會有所幫助),如下所示:
Class Output {
private List<Map<String, String>> key;
// setter, getting ommited
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.