Java 嵌套数组的GSON解析

Java 嵌套数组的GSON解析,java,json,gson,Java,Json,Gson,我很难理解GSON是否可以默认处理这种json,或者我是否需要为每个子元素实现反序列化器 json输入 { "services":[ { "id": 2, "name": "Buy" }, { "id": 3, "name": "Sell" } ] "status": { "code": 0, "message": "" }

我很难理解GSON是否可以默认处理这种json,或者我是否需要为每个子元素实现反序列化器

json输入

{
   "services":[
      {
         "id": 2,
         "name": "Buy"
      },
      {
         "id": 3,
         "name": "Sell"
      }
      ]
   "status": {
      "code": 0,
      "message": ""
   }
}
就我而言,最好的情况是让下面的类包含所有数据

java[POJO]

public class Services {
    public List<ServiceItem> services;
    public Status status;

    public class ServiceItem {
        public int id;
        public String name;
    }

    public class Status {
        public int code;
        public String message;
    }
}
公共类服务{
公开名单服务;
公众地位;
公共类服务项{
公共int id;
公共字符串名称;
}
公共阶级地位{
公共整数码;
公共字符串消息;
}
}
有没有可能让GSON处理类和json,然后让它工作呢?或者我需要为每个子类创建反序列化程序吗

更正json输入,如下所示(您在
状态
字段之前忘记了逗号)

然后让我们把你们的课程看作是

如果输入是json字符串
jsonInput
,则

输出:


这是无效的json
{
   "services":[
      {
         "id": 2,
         "name": "Buy"
      },
      {
         "id": 3,
         "name": "Sell"
      }
      ],
   "status": {
      "code": 0,
      "message": ""
   }
}
public class Services {
    public List<ServiceItem> services;
    public Status status;
    // getters and setters
    @Override
    public String toString() {
        return "["+services.toString()+status.toString()+"]";
    }

    public class ServiceItem {
        public int id;
        public String name;
        // getters and setters
        @Override
        public String toString() {
            return "("+id+","+name+")";
        }

    }

    public class Status {
        public int code;
        public String message;
        // getters and setters
        @Override
        public String toString() {
            return ",("+code+","+message+")";
        }
    }
}
Gson gson = new Gson();
Services data = gson.fromJson(new BufferedReader(new FileReader(
        "jsonInput.json")), new TypeToken<Services>() {
}.getType());
System.out.println(data);
Gson gson = new Gson();
Services data = gson.fromJson(jsonInput, Services.class);
System.out.println(data);
[[(2,Buy), (3,Sell)],(0,)]