如何使用 gson 反序列化具有不确定键的字符串?

How to deserialize the string with nondeterministic keys using gson?

我有一个 JSON 字符串,其中的键是不可预测的。 服务器 returns 每个响应具有不同键的值。 样本 JSON 看起来像 -

{
    "ids": {
        "123": "08:10",
        "456": "08:00"
    }
}

此处,键 123345 未固定,即在下一个请求中,我的响应如下所示 -

{
    "ids": {
        "123": "08:10",
        "456": "08:00"
    }
}

现在,我想使用 GSON 将此响应解析为一个对象。所以,我创建了模型 类 如下 -

data class SlotsResponse(
    val ids: IDs
)

data class IDs(
    val id: Map<String, String>
)

在代码中,我试图将其反序列化为 -

val response = Gson().fromJson(strResponse, SlotsResponse::class.java)

但是,我无法获得 IDs 的值。它们为空。

有人可以帮助我理解我想要实现的目标吗?

您用当前模型表示的内容包含一个额外的嵌套对象。所以它将代表 JSONs 看起来像这样:

{
    "ids": {
        "id": {
            "123": "08:10",
            "456": "08:00"
        }
    }
}

在你的实际JSON中,并没有名为id的字段,所以你只需要带有字段ids的根对象,以及动态映射:

data class SlotsResponse(
    val ids: Map<String, String>
)