gpt4 book ai didi

gson - 如何解析带有Gson注释的动态列表?

转载 作者:行者123 更新时间:2023-12-04 13:02:09 26 4
gpt4 key购买 nike

我正在使用 Retrofit 和 Gson 来查询 API,但是我从未遇到过像这样的 JSON 响应。

回应:

{
Response: {
"Black":[
{"id":"123","code":"RX766"},
{"id":"324","code":"RT344"}],
"Green":[
{"id":"3532","code":"RT983"},
{"id":"242","code":"RL982"}],
"Blue":[
{"id":"453","code":"RY676"},
{"id":"134","code":"R67HJH"}]
}
}

问题是列表元素 id 例如“black”是动态的,所以我不知道它们会是什么。

到目前为止,我已经为内部类型创建了一个类;

class Type {
@SerializedName("id") private String id;
@SerializedName("code") private String code;
}

是否可以有以下内容?

class Response {

@SerializedName("response")
List<Type> types;
}

然后将列表ID移动到类型中,这样Type类就变成了;

class Type {
@SerializedName("id") private String id;
@SerializedName("code") private String code;
@SerializedName("$") private String type; //not sure how this would be populated
}

如果不是,那么如何仅使用 Gson 属性来解析它?

好的,我刚刚看到这个问题; How to parse dynamic JSON fields with GSON?

看起来很棒,是否可以用响应对象包装通用 map ?

最佳答案

如果按键是动态的,您需要一张 map 。

class Response {
@SerializedName("response")
Map<String, List<Type>> types;
}

反序列化后,您可以将类型强制转换为域中更具语义的内容。

如果这不合适,您将需要注册一个 TypeAdapterJsonDeserializer 并将类似 map 的数据自定义反序列化为简单的 List.

关于gson - 如何解析带有Gson注释的动态列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25898510/

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