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 可能会有用:
鉴于以下 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 可能会有用: