Разбор вложенного JSON с Kotlinx.Serialization - PullRequest
0 голосов
/ 29 марта 2019

Я играл с 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?

P.S: Вы бы порекомендовали вместо этого модификацию (потому что она старше, а может и более зрелая)?

Спасибо

1 Ответ

0 голосов
/ 11 мая 2019
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)
}
...