android - 如何解析这种具有不同名称的 json,或者告诉我如何在回收站视图中显示此响应。:(
问题描述
{
"code":200,
"response":{
"Categories":{
"12345":{
"name":"Category1",
"image":"image1URL"
},
"23456":{
"name":"Category2",
"image":"image2URL"
},
"34567":{
"name":"Category13",
"image":"image3URL"
},
"45678":{
"name":"Category14",
"image":"image4URL"
},
"56789":{
"name":"Category15",
"image":"image5URL"
}
}
}
}
它就像它有所有的uids。我不知道,我需要真正快速的帮助,最后一件事,我不能要求他们修改。
解决方案
您可以使用JSONObject
(org.json 库)解析对象并遍历子元素的键,videoCategories
如下所示:
val videoCategories = JSONObject(jsonString).getJSONObject("response").getJSONObject("videoCategories")
videoCategories.keys().forEach { uuid ->
Log.v("JSONParsing", "uuid: $uuid")
}
或者,当然,使用其他集合操作(如map
)将特定元素转换为模型对象,您可以在回收器视图适配器中使用它:
val videoCategories = JSONObject(jsonString).getJSONObject("response").getJSONObject("videoCategories")
val categories = videoCategories.keys().map { uuid ->
val categoryObject = videoCateories.getJSONObject(uuid)
val name = categoryObject.getString("name")
val image = categoryObject.getString("image")
Category(uuid, name, image)
}
推荐阅读
- node.js - 节点js传递/发送post数据到html
- javascript - 无法理解 Cloud Function Error
- android-studio - 如何在水平布局/滚动视图中分离图像?
- c - 使用 winsock2.h 的问题
- java - 如何自动化新的 Facebook 注册弹出窗口?
- azure - 无法在 .net 框架中的 Azure 函数应用中绑定参数“lockToken”?
- pdf - com.itextpdf.kernel.PdfException:文档已关闭。无法执行动作
- java - 在 Spring-Batch 的上下文中持久存在实体 (jpa) 的问题,该实体是一个带有一些额外字段的连接表
- django - 如何在 Django 中将参数传递给计划的 cron 任务?
- nestjs - NestJs:为什么我们不使用 DTO 来替换所有接口?