Kotlin で JSON を解析するにはどうすればいいですか? 質問する

Kotlin で JSON を解析するにはどうすればいいですか? 質問する

サービスから非常に深い JSON オブジェクト文字列を受信して​​おり、これを JSON オブジェクトに解析してクラスにマップする必要があります。

Kotlin で JSON 文字列をオブジェクトに変換するにはどうすればよいですか?

その後、それぞれのクラスにマッピングするために、Jackson の StdDeserializer を使用しました。問題は、オブジェクトにクラスにデシリアライズする必要のあるプロパティがあるときに発生します。別のデシリアライザー内でオブジェクト マッパーを取得できませんでした (少なくとも方法がわかりませんでした)。

できれば、ネイティブで、必要な依存関係の数を減らそうとしているので、答えが JSON の操作と解析だけであれば十分でしょう。

ベストアンサー1

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.encodeToString(MyModel.serializer(), MyModel(42))
    println(jsonData) // {"a": 42, "b": "42"}
    
    // serializing lists
    val jsonList = Json.encodeToString(MyModel.serializer().list, listOf(MyModel(42)))
    println(jsonList) // [{"a": 42, "b": "42"}]

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

おすすめ記事