1

嗨,我是 kotlinx 序列化的新手,我正在使用 KMP,我的要求有点不同

我的数据类

@Serializable 数据类 Student(val name : String , val age : Int)

我的简单 JSON 将是“['Avinash', 22]”,

应该反序列化为 Student("Avinash", 22)

我无法反序列化它任何人都可以帮助我

4

2 回答 2

1

尽管诸如[Avinash, 22]格式不正确的 Json 之类的输入,您仍然可以通过将其解析为 a 来使用它JsonElement

import kotlinx.serialization.json.*

data class Student(val name: String, val age: Int)

fun decode(stringData: String, parser: Json): List<Student> {
    val element: JsonArray = parser.parseToJsonElement(stringData).jsonArray
    return element.windowed(2, 2).map {
        Student(
            it[0].toString(),
            it[1].toString().toInt()
        )
    }
}

fun main() {
    val parser = Json { isLenient = true }
    val students = decode("[A, 22, B, 33, C, 44]", parser)
    println(students)
    // [Student(name=A, age=22), Student(name=B, age=33), Student(name=C, age=44)]
}

于 2020-12-15T16:09:15.827 回答
0

尝试这个:

val student: Student = Json.decodeFromString("{\"name\": \"Avinash\", \"age\": \"22\"}")

注意如何格式化您的 JSON 字符串。

  • []方括号用于数组
  • {}花括号用于对象

您必须提供字段名称,并为字段和值使用双引号,或者使用不太严格的Json反序列化:

val json = Json {
    isLenient = true
}
val student: Student = json.decodeFromString("{name: Avinash, age: 22}")

如果您想深入了解 json 架构,可以阅读此处

于 2020-12-15T10:15:21.327 回答