无法在 Kotlin 中解析 json

Can't parse json in Kotlin

我有一个 json 这样的:

{"ok":true,"result":[{"update_id":853803195,
"message":{"message_id":313,"from":{"id":104906563,"is_bot":false,"first_name":"AL","username":"alzvaracc","language_code":"en"},"chat":{"id":104906563,"first_name":"AL","username":"alzvaracc","type":"private"},"date":1594723984,"text":"/start","entities":[{"offset":0,"length":6,"type":"bot_command"}]}},{"update_id":853803196,
"message":{"message_id":314,"from":{"id":104906563,"is_bot":false,"first_name":"AL","username":"alzvaracc","language_code":"en"},"chat":{"id":104906563,"first_name":"AL","username":"alzvaracc","type":"private"},"date":1594723986,"text":"e"}},{"update_id":853803197,
"message":{"message_id":325,"from":{"id":104906563,"is_bot":false,"first_name":"AL","username":"alzvaracc","language_code":"en"},"chat":{"id":104906563,"first_name":"AL","username":"alzvaracc","type":"private"},"date":1594734252,"text":"\ud83d\ude06"}},{"update_id":853803198,
"message":{"message_id":328,"from":{"id":104906563,"is_bot":false,"first_name":"AL","username":"alzvaracc","language_code":"en"},"chat":{"id":104906563,"first_name":"AL","username":"alzvaracc","type":"private"},"date":1594736358,"text":"5"}}]}

我正在使用 klaxon 库。 就像在第一个例子中我创建了一个 class:

class Response(val ok: Boolean, val result: String)

我试图将第二个参数保存到一个字符串中,这样我也可以稍后解析它。但是我遇到这样的异常:

Unable to instantiate Response with parameters [ok: true, result: [, , , ]]

我尝试将结果设为 JsonObject(或 JsonObjectsJsonArray)并得到了这个

Unable to instantiate JsonObject with parameters []

唯一或多或少起作用的是 List。结果变成 java 个对象的列表,如下所示:

[java.lang.Object@680362a, java.lang.Object@3569edd5, java.lang.Object@1f651cd8, java.lang.Object@7d0332e1]

但我不知道如何对付他们。
所以我的问题是我该怎么办?如何获得我可以使用的结果?

试试这个 class

import com.beust.klaxon.*

private val klaxon = Klaxon()

data class User (
    val ok: Boolean,
    val result: List<Result>
) {
    public fun toJson() = klaxon.toJsonString(this)

    companion object {
        public fun fromJson(json: String) = klaxon.parse<User>(json)
    }
}

data class Result (
    @Json(name = "update_id")
    val updateID: Long,

    val message: Message
)

data class Message (
    @Json(name = "message_id")
    val messageID: Long,

    val from: From,
    val chat: Chat,
    val date: Long,
    val text: String,
    val entities: List<Entity>? = null
)

data class Chat (
    val id: Long,

    @Json(name = "first_name")
    val firstName: String,

    val username: String,
    val type: String
)

data class Entity (
    val offset: Long,
    val length: Long,
    val type: String
)

data class From (
    val id: Long,

    @Json(name = "is_bot")
    val isBot: Boolean,

    @Json(name = "first_name")
    val firstName: String,

    val username: String,

    @Json(name = "language_code")
    val languageCode: String
)