簡體   English   中英

android jackson json對象映射器數組反序列化

[英]android jackson json object mapper array deserialization

我需要幫助解析傑克遜映射器到POJO的響應。 我有這個作為回應:

 "data": [{
        "item": {
            "downloaded": false,
            "moderated": false,
            "add": false
        }
    },
    {
        "item": {
            "downloaded": false,
            "moderated": false,
            "add": false }
// more

那么如何將這個與mapper綁定到POJO? 這是我正在嘗試的類,但它返回“item”無法識別且不允許被忽略。

public ArrayList<Item> data =  new ArrayList<Item>();

其中item是一個公共靜態類Item,帶有構造函數,上面的所有字段都帶有getter和setter。

我該怎么做呢。 我似乎無法找到如何以這種方式從數組中讀取數據。

JsonNode jsonNode = mapper.readValue(s, JsonNode.class); 
JsonNode userCards = jsonNode.path("data");
List<Item> list = mapper.readValue(userCards.toString(), new TypeReference<List<Item>>(){});

您的示例缺少幾個部分(尤其是Item的定義),以了解您的結構是否兼容; 但一般來說JSON和Object結構需要匹配。 所以,你至少需要這樣的東西:

public class DataWrapper {
  public List<Item> data; // or if you prefer, setters+getters
}

如果是這樣,你會綁定:

DataWrapper wrapper = mapper.readValue(json, DataWrapper.class);

和訪問數據

List<Item> items = wrapper.data;

這是我對maziar代碼的變體。

List<Item> list = mapper.readValue( s, new TypeReference<List<Item>>(){} );

它只是消除了首先轉換為JsonNode並轉而直接轉換為List; 仍然可以正常工作,輸出一個項目列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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