2016-08-21 141 views
1

我使用的改造来从返回JSON对象在这个格式的API数据:嵌套对象:对多个子同父对象对象

{ 
    "error": 0 
    "message": "Request Successful" 
    "data": [ ... ] 
} 

我GSON把它拿来与这些类POJO:

public class SearchResponse { 
    @SerializedName("error") 
    @Expose 
    private Integer error; 
    @SerializedName("message") 
    @Expose 
    private String message; 
    @SerializedName("data") 
    @Expose 
    private List<SearchResult> data; 

    (Getter and Setter here) 
} 


public class SearchResult { 
    @SerializedName("name") 
    @Expose 
    private String name; 
    @SerializedName("id") 
    @Expose 
    private Integer id; 
    .... 

    (Getter and Setter here) 
} 

的问题是,对于我做我必须做两个新类,即使在外部类总是包含相同的三个变量每一个请求:"error""message""data"。是否有任何方法可以为每个孩子使用相同的父母而不需要完全删除它? (我仍然需要"message"场)

回答

0

您可以使用泛型:

public class SearchResponse<T> { // T is a type variable 
    @SerializedName("error") 
    @Expose 
    private Integer error; 
    @SerializedName("message") 
    @Expose 
    private String message; 
    @SerializedName("data") 
    @Expose 
    private List<T> data; // We have a list of T 

    (Getter and Setter here) 
} 

你会反序列化,如:

Type t = new TypeToken<SearchResponse<SearchResult>>(){}.getType(); 
SearchResponse<SearchResult> response = gson.fromJson(jsonString, t); 

你仍然将不得不作出一个TypeToken为每个孩子虽然类型。