如何解析这种具有不同名称的 json,或者告诉我如何在回收站视图中显示此响应。 :(

Posted

技术标签:

【中文标题】如何解析这种具有不同名称的 json,或者告诉我如何在回收站视图中显示此响应。 :(【英文标题】:How do I parse this kinda json which has different names , or tel me how do I even display this response in recycler view. :( 【发布时间】:2021-10-21 12:24:28 【问题描述】:
 
   "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"
         
      
   

好像里面有所有的 uid。我不知道,我需要快速帮助,最后一件事,我不能要求他们修改。

【问题讨论】:

你的面试官知道你在这里发布这个问题吗? @enzo 当然不是。 :p 但我有一天的时间来完成这个。也是为了我的学习,CZ,如果不是我怎么会知道 【参考方案1】:

您可以使用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)

【讨论】:

以上是关于如何解析这种具有不同名称的 json,或者告诉我如何在回收站视图中显示此响应。 :(的主要内容,如果未能解决你的问题,请参考以下文章

我如何用 alamofire 解析 JSON

kotlinx.serialization :如何解析为与 JSON 键的确切名称不同的变量名称

我如何用alamofire解析JSON

使用 SAX 解析器,如何解析具有相同名称标签但元素不同的 xml 文件?

如何解析具有相同键的不同数据类型的改造对象的json数组

Retrofit2:如何在具有不同字段名称的对象中接收 JSON 响应?