我想使用 GSON 用 Kotlin 反序列化 json。但它返回 Null。Json 从对象开始。
这是 Json
val json = """{
"05-04-2018": [
{
"start_datetime": "2018-04-05 20:00:00",
"event_id": "1",
"event_title": "Anna Karenina",
"city_id": "1",
"stage_name": "Cüneyt Gökçer Sahnesi",
"address": "Çayyolu Ankara"
}
],
"07-04-2018": [
{
"start_datetime": "2018-04-07 15:00:00",
"event_id": "1",
"event_title": "Anna Karenina",
"city_id": "1",
"stage_name": "Cüneyt Gökçer Sahnesi",
"address": "Çayyolu Ankara"
},
{
"start_datetime": "2018-04-07 20:00:00",
"event_id": "1",
"event_title": "Anna Karenina",
"city_id": "1",
"stage_name": "Cüneyt Gökçer Sahnesi",
"address": "Çayyolu Ankara"
}
]
}"""
包括事件列表的类。另一个是物品类别。
data class Event (val event_id: Int,val event_title: String, val event_stage: String, val event_posterUri: String, val event_starttime: String)
data class EventArray (val dates: String, val eventArrayList: ArrayList<Event>)
和 GSON 部分
val sadasd: EventArray = gson.fromJson(json, EventArray::class.java)
所以我知道日期是动态的。如果您无法更改 API 设计,这是一种方法。
您使用JsonParser
如下方式解析 JSON :
val parsedJson = JsonParser().parse(json).asJsonObject
从中提取密钥
val keys = parsedJson.keySet();
遍历键,将内容提取为 a JsonArray
,然后遍历每个键并将其映射到类。
for (key in keys) {
var eventArray = parsedJson[key].asJsonArray
eventArray.forEach {
val event = Gson().fromJson(it.asJsonObject, Event::class.java)
print(event)
}
}
理想情况下,您希望以更好的 JSON 开始。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句