簡體   English   中英

Spring Jackson將json對象轉換為Java數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM