Kotlin class 应该是什么来表示 json 和 classes 数组

What should be the Kotlin class to represent a json with array of classes

鉴于以下 JSON:

{
"from": 1,
"to": 3,
"results": [
    {
        "item": {
            "status": "SUCCESS",
            "statusMessage": "",
            "requestId": "1"
        }
    },
    {
        "item": {
            "status": "SUCCESS",
            "statusMessage": "",
            "requestId": "2"
        }
    },
    {
        "item": {
            "status": "SUCCESS",
            "statusMessage": "",
            "requestId": "3"
        }
    },
    {
        "item": {
            "status": "SUCCESS",
            "statusMessage": "",
            "requestId": "4"
        }
    }
]}

为了使用 kotlinx.serialization.json.Json 反序列化,正确的 Kotlin 类 应该定义什么?

我试过:

data class Response (
  val from: Long,
  val to: Long,
  val results: List<Result>
)

data class Result (
  val item: List<Item>
)

data class Item (
  val status: String,
  val statusMessage: String,
  val requestID: String
)

我的尝试没有正确描述项目列表。 我做错了什么?

您的每个 Result 都有一个 Item,密钥为 "item",因此它应该是:

data class Result (
  val item: Item
)

你可以像下面这样写class。

data class Temp(
    val from: Int, // 1
    val results: List<Result>,
    val to: Int // 3
) {
    data class Result(
        val item: Item
    ) {
        data class Item(
            val requestId: String, // 1
            val status: String, // SUCCESS
            val statusMessage: String
        )
    }
}

除了 Result class 之外,一切都很好。在 JSON 中,数组保存在方括号之间,如下所示:[a, b, c]。请注意,Result.

中没有方括号

不过,不要在这类问题上花太多时间。请改用 JSON 到 POJO 转换器。

https://json2csharp.com/json-to-pojo

此外,这个 Whosebug link 可能会有用: