KotlinでJSONをシリアライズ、デシリアライズする方法を紹介します。
kotlinx.serializationというライブラリを使用します。
ビルドツールはGradle Kotlinを使用しています。
kotlinx.serializationのGitHubのページにMavenの使い方なども書いています。
コード
build.gradle.ktsに以下を追加します。
plugins {
kotlin("jvm") version "1.6.10"
kotlin("plugin.serialization") version "1.6.10" // ここを追加
application
}
dependencies {
testImplementation(kotlin("test"))
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.2") // ここを追加
}
GitHubのサンプルとほぼ同じですが、以下のようにしてJSONのシリアライズ、デシリアライズが可能となりました。
対象のクラスに@Serializable
をつけるだけで変換することができます。
import kotlinx.serialization.*
import kotlinx.serialization.json.*
@Serializable
data class Person(
val name : String,
val age : Int
)
fun main(args: Array<String>) {
val jsonString = """{ "name" : "taro", "age" : 10 }"""
// デシリアライズ
val person = Json.decodeFromString<Person>(jsonString)
println(person)
// シリアライズ
val personJson = Json.encodeToString(person)
println(personJson)
}
出力結果
Person(name=taro, age=10)
{"name":"taro","age":10}