如何使用 gson 反序列化具有不确定键的字符串?
How to deserialize the string with nondeterministic keys using gson?
我有一个 JSON 字符串,其中的键是不可预测的。
服务器 returns 每个响应具有不同键的值。
样本 JSON 看起来像 -
{
"ids": {
"123": "08:10",
"456": "08:00"
}
}
此处,键 123
和 345
未固定,即在下一个请求中,我的响应如下所示 -
{
"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>
)
我有一个 JSON 字符串,其中的键是不可预测的。 服务器 returns 每个响应具有不同键的值。 样本 JSON 看起来像 -
{
"ids": {
"123": "08:10",
"456": "08:00"
}
}
此处,键 123
和 345
未固定,即在下一个请求中,我的响应如下所示 -
{
"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>
)