Android Moshi解析具有重复字段的嵌套对象
我有以下JSON对象,它是一个包含许多对象的对象Android Moshi解析具有重复字段的嵌套对象,android,json,retrofit,moshi,Android,Json,Retrofit,Moshi,我有以下JSON对象,它是一个包含许多对象的对象 { "people": { "john": { "age": "25", "location": "Japan", "favColor": "green" }, "Bill": { "age": "65", "location": "Canada", "favColor": "red" }, "Ann": { "age"
{
"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"
}
}
}
我如何将其解析为一个列表?由于对象的数量可能会增长得相当大,我不想处理大量嵌套数据。我想明白了。假设我们的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
}
}
类PersonListAdapter{
@FromJson
来自JSON的乐趣(reader:JsonReader,delegate:JsonAdapter):列表{
val list=ArrayList()
reader.beginObject()
reader.skipName()
reader.beginObject()
while(reader.hasNext()){
reader.skipName()
delegate.fromJson(reader)?.let{list.add(it)}
}
reader.endObject()
reader.endObject()
返回列表
}
}
我认为如果你能在你的名字中添加一个标题,比如“name”:“john”等,那么解析就容易多了。@goldwynda我无法控制响应。你试过解析它吗?你能提供代码吗?