【发布时间】:2021-02-08 05:34:31
【问题描述】:
我正在尝试反序列化以下字符串:
val stringJson = "{\"decomposed\":[\", \",{\"id\":4944372,\"name\":\"Johny\",\"various\":false,\"composer\":false,\"genres\":[]}]}"
反序列化可以很好地使用以下代码
@Serializable
data class Artist(
val decomposed: JsonArray
)
fun main() {
val jsonString = "{\"decomposed\":[\", \",{\"id\":4944372,\"name\":\"Johny\",\"various\":false,\"composer\":false,\"genres\":[]}]}"
println(Json.decodeFromString<Artist>(jsonString))
}
但我想做类似的事情
@Serializable
class Decomposed {
@Serializable
class DecomposedClassValue(val value: DecomposedClass)
@Serializable
class StringValue(val value: String)
}
@Serializable
data class DecomposedClass(
val id: Long? = null,
val name: String? = null,
val various: Boolean? = null,
val composer: Boolean? = null,
val genres: JsonArray? = null
)
@Serializable
data class Artist(
val decomposed: List<Decomposed>
)
fun main() {
val jsonString = "{\"decomposed\":[\", \",{\"id\":4944372,\"name\":\"Johny\",\"various\":false,\"composer\":false,\"genres\":[]}]}"
println(Json.decodeFromString<Artist>(jsonString))
}
但是kotlinx.serialization 预计会失败,JsonDecodingException: Unexpected JSON token at offset 15: Expected '{, kind: CLASS'
而且我不知道如何重写我的Decomposed 以便反序列化工作。你能帮帮我吗?
【问题讨论】:
-
是否可以调整 JSON 的格式或者这是一个硬性要求?
标签: json kotlin serialization kotlinx.serialization