繁体   English   中英

对象映射器反序列化映射数组

[英]Object Mapper deserializing map array

   {
       "name" : "test",
       "info": [
          {
            "key1": "test",
            "key2": "blaa",
            "key3": "yadayada"
          },
          {
            "key4": "test1",
            "key5": "blaa1",
            "key6": "yadayada1"
          }
        ],
    }

我有这个班的反序列化

public class Account{
    private String name;
    private Map<String,String>[] info;
}

由于某种原因, info不会反序列化...即使使用List<Map<String,String>>也不总是反序列化,并且name始终为null

(即使用ObjectMapper

编码

   ObjectMapper objectMapper = new ObjectMapper();
   objectMapper.disable( DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES);
   results = objectMapper.readValue(responseBody.getEntity().getContent(), Account.class);

谢谢

问题在于您发布的JSON模式末尾带有错误的逗号 )。 尝试以下

假设responseBody.getEntity().getContent()是您发布的JSON

Account.java

或更具体

private String name;
private Map<String,String>[] info;
//getters && setters && default constructor

反序列化方法

    Account account = null;
    ObjectMapper objectMapper = new ObjectMapper();
    try {
        account = objectMapper.readValue(responseBody.getEntity().getContent(), Account.class);
    } catch (IOException e) {
        e.printStackTrace();
    }

这是错杂的事情。

  1. 您的JSON无效-在右方括号后使用最后一个逗号
  2. 您的POJO没有显示可访问的方法来设置值(即反序列化为Account
  3. 根据您的帖子, name字段已反序列化,我想这实际上意味着确实存在一些可访问的设置器,但您可能还没有发布它?
  4. 如果info静静地失败序列化,因为你很可能ObjectMapper已经配置了DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIESfalse看到- 文档
  5. 您可以使用List<Map<String, String>>作为info ,或保留Map<String, String>[] -与您的问题无关。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM