如何在 Kotlin 中解析 JSON?

新手上路,请多包涵

我从服务接收到一个非常深的 JSON 对象字符串,我必须将其解析为 JSON 对象,然后将其映射到类。

如何在 Kotlin 中将 JSON 字符串转换为对象?

在映射到各个类之后,我使用了 Jackson 的 StdDeserializer。问题出现在对象具有也必须反序列化为类的属性时。我无法在另一个反序列化器中获取对象映射器,至少我不知道如何。

最好,在本地,我试图减少我需要的依赖项的数量,所以如果答案只是用于 JSON 操作和解析就足够了。

原文由 AJ_1310 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 735
2 个回答

毫无疑问,Kotlin 中解析的未来将是 kotlinx.serialization。它是 Kotlin 库的一部分。 kotlinx.serialization 1.0 版本终于发布了

https://github.com/Kotlin/kotlinx.serialization

 import kotlinx.serialization.*
import kotlinx.serialization.json.JSON

@Serializable
data class MyModel(val a: Int, @Optional val b: String = "42")

fun main(args: Array<String>) {

    // serializing objects
    val jsonData = JSON.stringify(MyModel.serializer(), MyModel(42))
    println(jsonData) // {"a": 42, "b": "42"}

    // serializing lists
    val jsonList = JSON.stringify(MyModel.serializer().list, listOf(MyModel(42)))
    println(jsonList) // [{"a": 42, "b": "42"}]

    // parsing data back
    val obj = JSON.parse(MyModel.serializer(), """{"a":42}""")
    println(obj) // MyModel(a=42, b="42")
}

原文由 Elisha Sterngold 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏