java - 如何在 Kotlin 中解析 JSON?

标签 java json kotlin

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

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

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

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

最佳答案

毫无疑问,Kotlin 解析的 future 将是 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")
}

关于java - 如何在 Kotlin 中解析 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41928803/

相关文章:

android - 收听 AppBarLayout 的偏移量变化(折叠/展开)以更改 Kotlin 中工具栏的背景

java - 无法在 Eclipse Oxygen 上设置 Selenium 3

java - Spring 4.3中从非事务方法调用@Transactional方法

java - JXTable java.lang.IndexOutOfBoundsException : Invalid range

php - Javascript 将 PHP Json 转换为 javascript 数组

kotlin - 在 Kotlin 中,抽象函数的默认参数值是否继承?

java - 如何向 JCombobox 添加填充

java - 接受 JSON 的 Controller 方法,不起作用

json - 如何使用 Restful 而不是编辑器 UI 创建 Oozie 工作流程?

java - 为什么 "return"在 Kotlin 中可以返回 "return"?