【问题标题】:How to Parse a JSON object with contains multiple JSON objects ( not an array) of the same type如何解析包含多个相同类型的 JSON 对象(不是数组)的 JSON 对象
【发布时间】: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;

【问题讨论】:

    标签: java json parsing gson


    【解决方案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);
        }
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-21
      • 1970-01-01
      • 2019-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多