我有这样的Json回复,如何获取日期
{
"2019-04-08": [
{
"path": "/HEdY2Ry1fIMVq0GmN5NipS62SMcHpGH6ocZ0PU0p.png",
"org_name": "bmi_icon.png"
},
{
"path": "/v5QvdZfpZgGHh3ZfWNlvpTKYssXItbl1M6aaxlCJ.png",
"org_name": "heartrate.png"
}
],
"2019-04-01": [
{
"path": "/L6xuyZGhy0giq8K4rxGnkcO1OND9lRzDrDHvokol.png",
"org_name": "avatar.png"
}
],
"2019-04-04": [
{
"path": "/lRwBmuVMPv1AWdo00onOy5eOXuCacvfbfBVAaCZ1.jpeg",
"org_name": "bp.jpg"
}
],
"2019-04-10": [
{
"path": "/aA5rV0FAStrtCH328jX9lLwHYRCIo8TuQ7f0PouV.png",
"org_name": "Screenshot_20180717-183728.png"
}
]
}
我需要从响应中获取日期
我需要获取每个循环的日期
答案 0 :(得分:0)
因此,我相信根据leveraging gson
的改进可以手动使用gson您所描述的json的结构意味着您在顶层没有Kotlin Land对象,但是没有Kotlin Land Map。如果您可以控制所使用的API,请尽量不要将Maps放在顶层-它是什么地图?理想情况下,您在顶层有一个很好的定义良好的对象,并且其中包含字段,这些字段传达了所存储数据的语义。但这是一个缺点。
让我们定义一个您的日期映射到的对象:
data class ImageMapping(
val path: String,
val org_name: String
)
然后,对于您特定的数据结构,您将需要使用Retrofit服务的直接调用并直接访问响应的正文。一旦有了它,就可以自己反序列化。我不知道您的端点的外观或样子,这个问题不是关于连接Retrofit,我想的是关于使用Map作为顶部对象反序列化json。希望这足以将其连接到您自己的代码中:
val call = yourRetrofitService.getYourData(yourArgument)
val result = call.execute().body()
val gson = Gson()
val type = object : TypeToken<Map<String, List<ImageMapping>>>() {}.type
val map: Map<String, List<ImageMapping>> = gson.fromJson(result, type)
map.forEach{entry ->
println(entry.key) // This should be your dates.
}
让json与Kotlin中的Map类型配合使用的关键部分是定义该TypeToken。