我正在使用Retrofit从API中获取数据,该API以这种格式返回JSON对象:
{
"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 :(得分: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
。