我正在使用 1.0.0 版本的kotlin 序列化,但是当我尝试反序列化“灵活”数组时我被卡住了。
从我无法控制的后端 API 中,我得到一个包含不同类型对象的 JSON 数组。您将如何使用 kotlin 序列化反序列化它们?
例子
这是 API 的响应
[
{
"id": "test",
"person": "person",
"lastTime": "lastTime",
"expert": "pro"
},
{
"id": "test",
"person": "person",
"period": "period",
"value": 1
}
]
@Serializable
sealed class Base {
@SerialName("id")
abstract val id: String
@SerialName("person")
abstract val person: String
}
@Serializable
data class ObjectA (
@SerialName("id") override val id: String,
@SerialName("title") override val title: String,
@SerialName("lastTime") val lastTime: String,
@SerialName("expert") val expert: String
) : Base()
@Serializable
data class ObjectB (
@SerialName("id") override val id: String,
@SerialName("title") override val title: String,
@SerialName("period") val period: String,
@SerialName("value") val value: Int
) : Base()
执行以下代码会导致错误
println(Json.decodeFromString<List<Base>>(json))
错误Polymorphic serializer was not found for class discriminator