【问题标题】:ObjectMapper - String JSON to java object with sublevel arraysObjectMapper - 字符串 JSON 到带有子级数组的 java 对象
【发布时间】:2021-06-03 20:44:30
【问题描述】:

我正在尝试将 json 字符串反序列化为对象,并面临一个问题,即我在子级别中有对象数组。 我查看了下面的stackoverflow链接,他们为每个子级别设计了一个类和一个类;并将 List 用于数据数组。 我使用了相同的方法,但每个对象都有单独的类(单独的 java 文件)

Json string parsing to java object with multiple objects

How to use Jackson to deserialise an array of objects

让我给你看一下我的代码:

人物详细信息的 JSON

{
"name" : "abcd",
"age" : 30,
"addressList" : {
   "count" : 2,
   "data" : [
     {
      "state" : "NY",
      "city" : "Bronx"
     },
     {
      "state" : "NJ",
      "city" : "Chestnut"
     }
   ]
 }
}

public class Person {
    private String name;
    private int age;
    private AddressList addressList;

    public Person() { }

    //getters and setters
}

public class AddressList {
    private int count;
    private List<Address> data;

    public AddressList() { }

    //getters and setters
}

public class Address {
    private String state, city;

    public Address() { }

    //getters and setters
}

在我的主课中,如下所示:

ObjectMapper mapper = new ObjectMapper();
Defect defect = mapper.readValue(jsonString, Person.class);

现在,除地址列表外,所有值都已正确加载。即使我在AddressList.java 中尝试了Address[] 而不是List&lt;Address&gt;,但没有运气。 谁能给我一些想法或者可能是什么错误。提前致谢。

【问题讨论】:

  • @Kayaman 很抱歉造成混乱。这是一个错字。在 json 中更正它。
  • JSON 有效载荷适合给定 Java POJOs 类。一定是其他地方出了问题。
  • @MichałZiober 谢谢
  • 这是我的错误。在重新检查整个 JSON 时,有一个名称错误的字段,因为它是大 json,所以不知何故错过了。无论如何,谢谢大家。

标签: java arrays jackson deserialization


【解决方案1】:

基本上,上面的结构应该可以正常工作,正如 cmets 区域中指出的那样。最初对我不起作用,因为我没有注意到我的字段名称是错误的,通过更正它就像魅力一样工作。

【讨论】:

    猜你喜欢
    • 2017-08-04
    • 2012-03-25
    • 1970-01-01
    • 2018-01-12
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    相关资源
    最近更新 更多