Kotlin での JSON の解析
JSON の操作と解析は、多くの Kotlin アプリケーションにおいて重要なタスクです。 JSON 文字列を効果的に処理するには、Kotlin エコシステムで利用できる適切な手法を理解することが不可欠です。
ネイティブ JSON 操作
Kotlin のネイティブ JSON 処理機能は、次のような最小限のアプローチです。外部依存関係が不要になります。 JSON 文字列をオブジェクトに解析するための次のソリューションを検討してください。
import org.json.JSONObject val jsonString = "{ \"name\": \"John Doe\", \"age\": 30 }" val json = JSONObject(jsonString) val name = json.getString("name") val age = json.getInt("age")
KotlinX Serialization
KotlinX Serialization は、高レベルのシリアル化を提供する包括的な JSON 解析ライブラリです。デシリアライゼーション機能。これを利用するには:
プロジェクトの build.gradle に次の依存関係を追加します:
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.0"
@Serializable を使用してデータ クラスを定義します。注釈:
@Serializable data class Person(val name: String, val age: Int)
Json オブジェクトを使用した JSON 文字列の解析:
val jsonString = "{ \"name\": \"Jane Doe\", \"age\": 35 }" val person = Json.decodeFromString(Person.serializer(), jsonString)
ネストされたオブジェクトのアドレス指定
ジャクソンズStdDeserializer では、ネストされたプロパティを持つオブジェクトをデシリアライズできますが、別のデシリアライザー内でこれにアクセスするのは困難な場合があります。 KotlinX シリアル化は、カスタム逆シリアル化メカニズムを通じてソリューションを提供します。以下に例を示します。
import kotlinx.serialization.json.JsonObject import kotlinx.serialization.json.JsonTreeParser import kotlinx.serialization.KSerializer class NestedObjectDeserializer : KSerializer<MyObject> { override fun serialize(output: Encoder, value: MyObject) = error("not implemented") override fun deserialize(input: Decoder): MyObject { val parser = JsonTreeParser(input) val jsonObject = parser.parse(JsonObject::class) val key = jsonObject["key"] as JsonObject return MyObject(key["innerValue"] as JsonPrimitive) } }
結論
ネイティブ JSON 処理または KotlinX シリアル化のどちらを好む場合でも、これらのソリューションは、Kotlin で JSON 文字列を解析する効果的な手段を提供します。ネイティブ JSON 操作はよりシンプルなオプションですが、KotlinX シリアル化は複雑なシリアル化および逆シリアル化タスクのための高度な機能を提供します。
以上がKotlin で JSON を効率的に解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。