在 kotlin 中使用 Gson 进行 Json 反序列化

用户3513024

我想使用 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章