我是 Kotlin 新手。我正在尝试重新创建此响应对象
Response:
{"
id":"abc123",
"cat1": {
"key1":"value1",
"key2":"value2"
},
"cat2": {
"key3":"value3"
}
}
但在创建数据类时这似乎是不可能的
val id: String,
val category: String, Map<String, String>
这是我目前所拥有的:
data class ResponseObject(
val id: String,
val category: Map<Category, Map<String, String>>
)
** 类别是一个枚举类 **
我明白了
{"
id":"abc123",
"category: {
"cat1": {
"key1":"value1",
"key2":"value2"
},
"cat2": {
"key3":"value3"
}
}
}
任何帮助都将不胜感激!
也许是这个:
印刷:
{"id":"abc123","cat1":{"key1":"value1","key2":"value2"},"cat2":{"key3":"value3"}}
未压缩后如下:
我认为您混淆了 JSON 和 Map 的概念。在 Map 中,您不能有键冲突。您的 JSON 将允许以下响应
在上面的 JSON 示例中,“cat1”出现了两次,但是地图不允许这样做。
您可以使用 JSON 序列化器库,例如 GSON 或 Moshi(kotlin 友好),并对 JSON 进行一些更改。
更改 JSON 后,响应数据结构将如下所示:
或者,更精致、更 Kotlin 风格的方法是
或者,您也可以使用类似 ObjectMapper 和 Jackson 库的东西,将所有 JSON 强制转换为 Map。
我链接了另一个 stack overflow 问题供您参考。这里的键是动态的。我相信这与您要找的东西类似。 在 android 中使用 GSON 解析具有动态“键”和“值”的 JSON
希望这可以帮助您解决问题。
编辑: