如何在 Gson 反序列化中折叠嵌套结构?
How do I collapse nested structures in Gson deserialization?
我正在为在 JSON 响应中使用大量深度嵌套 objects/arrays 的服务构建一个 API 客户端。例如:
"foo":{
"name":"something",
"id":1
"data":{
"items":[
...
//item objects
...
]
}
}
我希望我的解析 "foo" class 跳过 "data" 成员,看起来像这样:
class Foo {
int id;
String name;
List<Item> items;
}
使用 Gson 解析 JSON 同时消除响应数据中的 "data" 层的最佳方法是什么?
最简单的方法,无需编写自定义反序列化器,只需添加一个包装器对象。
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 方法,包装器 Data
对象永远不会暴露给 public API,因此在功能上是相同的。
我正在为在 JSON 响应中使用大量深度嵌套 objects/arrays 的服务构建一个 API 客户端。例如:
"foo":{
"name":"something",
"id":1
"data":{
"items":[
...
//item objects
...
]
}
}
我希望我的解析 "foo" class 跳过 "data" 成员,看起来像这样:
class Foo {
int id;
String name;
List<Item> items;
}
使用 Gson 解析 JSON 同时消除响应数据中的 "data" 层的最佳方法是什么?
最简单的方法,无需编写自定义反序列化器,只需添加一个包装器对象。
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 方法,包装器 Data
对象永远不会暴露给 public API,因此在功能上是相同的。