gpt4 book ai didi

java - GSON解析前如何给对象添加自定义字段

转载 作者:行者123 更新时间:2023-11-29 19:37:06 24 4
gpt4 key购买 nike

我有一种情况,服务器返回的是队内球员列表,但是球员对象不包含球队id,我需要手传,或者收到后走looper

我正在使用 Retrofit 2.1Gson 2.7

我有一些 Gson 模型

public class SomeClass {

@SerializedName("fieldFromJSON")
private String mFieldFromJSON;
private String mCustomField; //<= This field is not in response

//... Empty constructor, getters and setters
}

和 Retrofit 界面

@GET("some/url")
Call<List<SomeClass>> getData(
String customField //<= This I must put to all classes in customField
);

给出这个回应

[
{
"fieldFromJSON":"something"
}
//, {...}, ...
]

是否可以使用 Retrofit 和 Gson 创建 SomeClassList 并将 customField 放入所有 SomeClass 类?

最佳答案

the server returns a list [...], but the [...] object doesn't contain the [...] id

这是我能想到的一些选项(请原谅我不完整的 Retrofit 代码)

选项 1:循环翻新结果。以遍历列表为代价,如果您绝对需要每个对象的变量引用,这很好。

final String id = "bla";

Call call = service.getData(id);
call.enqueue(new Callback<List<SomeClass>>() {

public void onResponse(List<SomeClass> list) {
for (SomeClass c : list) {
c.setCustomField(id);
}
}

// onError() {}
}

选项 2:将字段映射到列表。你说你有一个团队中的玩家列表,你的 API 调用似乎是通过 ID 获取这些团队的。这很好,例如,当获取所有球队的所有球员并且您需要通过 ID 快速查找球队时。本质上,您正在缓存 API 团队查找。

final Map<String, ArrayList<SomeClass>> teamMap = new HashMap<>();

final String id = "bla";

Call call = service.getData(id);
call.enqueue(new Callback<List<SomeClass>>() {

public void onResponse(List<SomeClass> list) {
teamMap.put(id, list);
}

// onError() {}
}

选项 3:改造服务器 API 以返回每个返回对象的必要请求字段。

关于java - GSON解析前如何给对象添加自定义字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39061592/

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