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

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

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

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


当前回答

使用http://www.json2kotlin.com/将JSON转换为Kotlin

你也可以使用Android Studio插件。> Settings文件,在左侧树中选择Plugins,点击“Browse repositories…”,搜索“JsonToKotlinClass”,选中它,点击绿色按钮“Install”。

在AS重启后,您可以使用它。你可以用File > New > JSON ToKotlin class (jsontokotlclasass)创建一个类。另一种方法是按Alt + K。

然后您将看到一个粘贴JSON的对话框。

2018年,我不得不添加包com.my。类开头的Package_name。

其他回答

GSON是Android和Web平台在Kotlin项目中解析JSON的一个很好的选择。此库由谷歌开发。 https://github.com/google/gson

1. 首先,将GSON添加到项目中:

dependencies {
    implementation 'com.google.code.gson:gson:2.8.9'
}

2. 现在你需要将JSON转换为Kotlin Data类:

复制您的JSON,并前往这个(https://json2kt.com)网站,并粘贴您的JSON输入JSON框。在适当的框中写入包(例如:com.example.appName)和类名(例如:UserData)。这个网站将在下面显示你的数据类的实时预览,你也可以在一个zip文件中下载所有的类。

下载所有类后,解压压缩文件并将它们放入您的项目中。

3.现在像下面这样解析:

val myJson = """
{
    "user_name": "john123",
    "email": "john@example.com",
    "name": "John Doe"
}
""".trimIndent()

val gson = Gson()
var mUser = gson.fromJson(myJson, UserData::class.java)
println(mUser.userName)

:完成)

似乎Kotlin没有任何内置方法,因为在许多情况下,它只是从Java中导入并实现了一些工具。在尝试了许多包之后,最终这个包运行正常。这个fastjson来自阿里巴巴,非常容易使用。内部构建gradle依赖:

implementation 'com.alibaba:fastjson:1.1.67.android'

在你的Kotlin代码中:

import com.alibaba.fastjson.JSON
var jsonDecodedMap: Map<String, String> =
            JSON.parse(yourStringValueHere) as Map<String, String>;

我创建了一个简单的扩展函数来将JSON字符串转换为模型类

inline fun <reified T: Any> String.toKotlinObject(): T =
    Gson().fromJson(this, T::class.java)

使用方法

stringJson.toKotlinObject<MyModelClass>()

芬兰湾的科特林序列化

Kotlin特定的库由JetBrains支持的所有平台- Android, JVM, JavaScript,本机。

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

Moshi

Moshi是一个JSON库,适用于Android和Java。

https://github.com/square/moshi

杰克逊

https://github.com/FasterXML/jackson

Gson

最受欢迎但几乎被弃用。

https://github.com/google/gson

JSON到Java

http://www.jsonschema2pojo.org/

JSON到Kotlin

智能插件 – https://plugins.jetbrains.com/plugin/9960-json-to-kotlin-class-jsontokotlinclass-

您可以使用这个库https://github.com/cbeust/klaxon

Klaxon是一个轻量级库,用于在Kotlin中解析JSON。