2015-04-28 60 views
1

我正在爲在JSON響應中使用大量深度嵌套對象/數組的服務構建API客戶端。例如:如何摺疊Gson反序列化中的嵌套結構?

"foo":{ 
    "name":"something", 
    "id":1 
    "data":{ 
     "items":[ 
      ... 
      //item objects 
      ... 
     ]   
    } 
} 

我想我的解析「富」類跳過「數據」成員,是這個樣子:

class Foo { 
    int id; 
    String name; 
    List<Item> items; 
} 

什麼用GSON解析的最佳方式JSON,同時消除響應數據中的「數據」層?

回答

4

最簡單的方法,不寫一個自定義的反序列化器,只是添加一個包裝器對象。

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對象永遠不會被暴露在公共API,所以在功能上卻是相同的。

+0

很好的解決方案,謝謝! – sak