我有以下JSON对象,它是一个包含许多对象的对象
{
"people": {
"john": {
"age": "25",
"location": "Japan",
"favColor": "green"
},
"Bill": {
"age": "65",
"location": "Canada",
"favColor": "red"
},
"Ann": {
"age": "42",
"location": "USA",
"favColor": "blue"
},
"Frank": {
"age": "45",
"location": "USA",
"favColor": "violet"
}
}
}
如何将其解析为列表?由于对象的数量可能会变得非常大,所以我不想处理大量的嵌套数据。
答案 0 :(得分:0)
弄清楚了。假设我们的JSON结构与我发布的完全相同,并且我们有一个Person
类,其中包含age
location
和favColor
字段,我们需要创建一个moshi适配器我们的JSON并返回一个列表。我们还将使用委托将每个对象解析为我们的Person类。看起来像这样:
class PersonListAdapter {
@FromJson
fun fromJson(reader: JsonReader, delegate: JsonAdapter<Person>): List<Person> {
val list = ArrayList<Person>()
reader.beginObject()
reader.skipName()
reader.beginObject()
while (reader.hasNext()) {
reader.skipName()
delegate.fromJson(reader)?.let { list.add(it) }
}
reader.endObject()
reader.endObject()
return list
}
}