Java 如何在Gson反序列化中折叠嵌套结构?
我正在为一个服务构建一个API客户端,该服务在JSON响应中使用了大量深度嵌套的对象/数组。例如:Java 如何在Gson反序列化中折叠嵌套结构?,java,android,json,gson,deserialization,Java,Android,Json,Gson,Deserialization,我正在为一个服务构建一个API客户端,该服务在JSON响应中使用了大量深度嵌套的对象/数组。例如: "foo":{ "name":"something", "id":1 "data":{ "items":[ ... //item objects ... ] } } 我希望我解析的foo类跳过数据成员,如下所示: class Foo {
"foo":{
"name":"something",
"id":1
"data":{
"items":[
...
//item objects
...
]
}
}
我希望我解析的foo类跳过数据成员,如下所示:
class Foo {
int id;
String name;
List<Item> items;
}
在消除响应数据中的数据层的同时,使用Gson解析JSON的最佳方法是什么?最简单的方法是添加一个包装器对象,而无需编写自定义反序列化程序
class Foo {
private int id;
private String name;
private Data data;
static class Data {
List<Item> items;
}
public int getId() { return id; }
public String getName() { return name; }
public List<Item> getItems() { return data.items; }
}
使用私有字段并使用getter方法,包装器数据对象永远不会暴露于公共API,因此功能上是相同的。不编写自定义反序列化程序的最简单方法就是添加包装器对象
class Foo {
private int id;
private String name;
private Data data;
static class Data {
List<Item> items;
}
public int getId() { return id; }
public String getName() { return name; }
public List<Item> getItems() { return data.items; }
}
通过使用私有字段和getter方法,包装器数据对象永远不会暴露于公共API,因此在功能上是相同的