如何在Gson反序列化中折叠嵌套结构?

sak*_*sak 1 java android json gson deserialization

我正在为一个服务构建一个API客户端,该服务在JSON响应中使用了大量深层嵌套的对象/数组.例如:

"foo":{
    "name":"something",
    "id":1
    "data":{
        "items":[
             ...
             //item objects
             ...
        ]        
    }
}
Run Code Online (Sandbox Code Playgroud)

我想我解析的"foo"类跳过"数据"成员,看起来像这样:

class Foo {
    int id;
    String name;
    List<Item> items;
}
Run Code Online (Sandbox Code Playgroud)

在消除响应数据中的"数据"层的同时,使用Gson解析JSON的最佳方法是什么?

dur*_*597 7

最简单的方法是在不编写自定义反序列化器的情况下添加包装器对象.

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; }
}
Run Code Online (Sandbox Code Playgroud)

使用私有字段并使用getter方法,包装器Data对象永远不会暴露给公共API,因此在功能上它是相同的.