我一直在使用Kotlinx.serialization,并且一直试图解析一个子字符串:
给定一个JSON,例如:
{
"Parent" : {
"SpaceShip":"Tardis",
"Mark":40
}
}我的代码是:
data class SomeClass(
@SerialName("SpaceShip") ship:String,
@SerialName("Mark") mark:Int)显然,Json.nonstrict.parse(SomeClass.serializer(), rawString)将失败,因为这对"SpaceShip“和"Mark”并不在JSON的根中。
如何使序列化程序引用JSON的子树?
你会推荐翻新(因为它更老,也许更成熟)吗?
发布于 2019-05-11 18:06:13
import kotlinx.serialization.*
import kotlinx.serialization.json.Json
@Serializable
data class Parent(
@SerialName("Parent")
val parent: SomeClass
)
@Serializable
data class SomeClass(
@SerialName("SpaceShip")
val ship:String,
@SerialName("Mark")
val mark:Int
)
fun main() {
val parent = Json.parse(Parent.serializer(), "{\"Parent\":{\"SpaceShip\":\"Tardis\",\"Mark\":40}}")
println(parent)
}发布于 2020-04-24 19:44:53
@Serializable
data class Parent(
@SerialName("Parent")
val someClass: SomeClass
)
@Serializable
data class SomeClass(
@SerialName("SpaceShip")
val ship: String,
@SerialName("Mark")
val mark: Int
)
fun getSomeClass(inputStream: InputStream): SomeClass {
val json = Json(JsonConfiguration.Stable)
val jsonString = Scanner(inputStream).useDelimiter("\\A").next()
val parent = json.parse(Parent.serializer(), jsonString)
return parent.someClass
}https://stackoverflow.com/questions/55412451
复制相似问题