如何在 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,因此在功能上是相同的。