如何解析包含多个相同类型的 JSON 对象(不是数组)的 JSON 对象

Posted

技术标签:

【中文标题】如何解析包含多个相同类型的 JSON 对象(不是数组)的 JSON 对象【英文标题】:How to Parse a JSON object with contains multiple JSON objects ( not an array) of the same type 【发布时间】:2022-01-18 03:20:30 【问题描述】:

我有一个 JSON 对象,其中包含多个 JSON 对象,所有类型都相同。 我应该如何用 GSON 解析它?

json:


"people":
      "1": 
          "name": "A",
          "age": 5
         ,
      "2": 
          "name": "B",
          "age": 6
         ,
      "3": 
          "name": "C",
          "age": 7
         


假设我有这个类 Person

class Person
   private String name;
   private int age;

我应该如何使用 GSON 将数据解析为数组? List<Person> people;

【问题讨论】:

【参考方案1】:

你需要一个代表你的 json 结构的类:

  class Person 
    private String name;
    private int age;
  

  class PersonMap 
    private Map<String, Person> people;
  

  @Test
  public void test() 
    String json =
        "\r\n"
            + "\"people\":\r\n"
            + "      \"1\": \r\n"
            + "          \"name\": \"A\",\r\n"
            + "          \"age\": 5\r\n"
            + "         ,\r\n"
            + "      \"2\": \r\n"
            + "          \"name\": \"B\",\r\n"
            + "          \"age\": 6\r\n"
            + "         ,\r\n"
            + "      \"3\": \r\n"
            + "          \"name\": \"C\",\r\n"
            + "          \"age\": 7\r\n"
            + "         \r\n"
            + "\r\n"
            + "";

    Gson gson = new GsonBuilder().setPrettyPrinting().create();

    var persons = gson.fromJson(json, PersonMap.class).people.values();
    for (Person person : persons) 
      System.out.println(person.name + " " + person.age);
    
  

【讨论】:

以上是关于如何解析包含多个相同类型的 JSON 对象(不是数组)的 JSON 对象的主要内容,如果未能解决你的问题,请参考以下文章

Android JSON解析多个对象

IOS JSON解析包含多个数组

如何从android中的url解析多个JSON对象和数组?我正在使用一个示例,我希望在该示例中使用它,

集合(Collection解析 Set List Map三大集合运用)

如何用python解析json对象(基础篇)

如何解析 JSON 数据对象内的数组内的数组?