gpt4 book ai didi

java - 嵌套对象: Same Parent Object for multiple Child Objects

转载 作者:太空宇宙 更新时间:2023-11-04 12:18:53 26 4
gpt4 key购买 nike

我正在使用 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”。有没有办法为每个 child 使用同一个 Parent 而无需完全删除它? (我仍然需要“message”字段)

最佳答案

您可以使用泛型:

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

关于java - 嵌套对象: Same Parent Object for multiple Child Objects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39065256/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com