繁体   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