Android Retrofit Json Parsing(部分json动态)

Posted

技术标签:

【中文标题】Android Retrofit Json Parsing(部分json动态)【英文标题】:Android Retrofit Json Parsing(part of json dynamic) 【发布时间】:2017-06-19 02:34:58 【问题描述】:

我们正在使用 Retrofit 1.9

最初服务器返回一个像这样的 json-


"known_key1":"value1",
"known_key2":"value2"

我们已经创建了模型 -

public class ResponseModel 
    @SerializedName("known_key1")
    private String knownKey1;

    @SerializedName("known_key2")
    private String knownKey2;
 

一切正常。

但是现在服务器在响应中返回了更多的键,但是键是动态的 -


"known_key1":"value1",
"known_key2":"value2",
"dynamic_key1":"value1",
"dynamic_key2":"value2"

现在我们的模型应该是什么?

【问题讨论】:

在这种情况下,不要使用模型。而是使用 JsonObject 并从 JsonObject 解析键。 你的意思是我们需要手动解析? 是的,或者您可以按照@Mike 的建议使用 Map 【参考方案1】:

对于这种情况,您可以使用地图

Map<String, Object> map

【讨论】:

如果我们在模型中包含这样的内容,Gson 将如何反序列化它,我的意思是 Gson 将分配什么键。我们没有得到任何作为地图的键。 不,你不再需要模型了,直接去地图。因此,在解析响应时,它就像键值对一样简单。 能否请您详细说明一下。 不使用 ResponseModel 类,只使用 Map 谢谢迈克。它可以工作,但是如果我们采用这种方法,我所有的 json 键和值都将在 Map 中。没关系。但是我们的 json 响应有大约 45 个键,其中一些映射到自定义对象。基本上我们希望有具有相应数据的模型。我们能做到吗?

以上是关于Android Retrofit Json Parsing(部分json动态)的主要内容,如果未能解决你的问题,请参考以下文章

Android 使用Retrofit获取JSON数据

Android Retrofit 请求字符串(非JSON数据)

Android Retrofit2 Post请求添加Json类型参数笔记

Android Retrofit 数组列表中的嵌套 JSON 对象

Android – 使用带有 Jetpack Compose 的 Retrofit 库进行 JSON 解析

Android – 使用带有 Jetpack Compose 的 Retrofit 库进行 JSON 解析