首页 > 解决方案 > 如何解析这种具有不同名称的 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。我不知道,我需要真正快速的帮助,最后一件事,我不能要求他们修改。

标签: androidjsonkotlinserializationretrofit

解决方案


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

推荐阅读