我使用改造和json。我需要解析这样的json:
{
"outer_array": [
"one" : [{}, {}],
"two" : [{}],
"three" : [{}],
....
]
}
这是我的代码的一部分:
@SerializedName("outer_array") var data: List<List<Data>>
但是如何通过键解析“outer_array”数组的每个元素。“outer_array”内的数组可以是从 0 到 n。也许我应该使用 TypeAdapter。但我不知道如何将其应用于这种情况,请帮助我
您提供的 JSON 无效。您可以在JSONLint上检查它。我想它应该是一个数组(没有"one" :
)或一个对象([
在outer_array前面应该是{
)在第一种情况下你的代码很好,在第二种情况下你可以使用Map(如HashMap),如果你需要转换它映射到数组你可以使用这样的东西
data class MyClass(
@SerializedName("outer_array") var data: HashMap<String, List<Data>>
){
val dataAsArray get() = data.map{ it.value }
}
但是,如果您必须解析此无效数据(例如,您无法要求提供者/后端解决此问题),即使是 TypeAdapter 也无济于事,因为 JSON 无效并且您将面临异常,您可以使用正则表达式将 invalid 替换[
]
为{
}
(但这太愚蠢了,尝试说服后端开发人员修复 json :D)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句