Kotlin에서 Json을 직렬화하는 방법을 알아보겠습니다.
기존에는 Jackson과 Gson 라이브러리를 주로 활용했습니다.
최근에 Jetbrains에서 Kotlin 전용 라이브러리를 개발했습니다.
바로 kotlinx.serialization입니다.
코드가 간편하고 성능도 뛰어난 라이브러리입니다.
먼저, Gradle에서 라이브러리 의존성을 추가합니다.
plugins { kotlin("jvm") version "1.8.10" kotlin("plugin.serialization") version "1.8.10" } dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.1") }
다음으로 Data Class를 선언합니다.
import kotlinx.serialization.Serializable @Serializable data class Data(val a: Int, val b: String)
Encode, Decode 메서드로 간단하게 Json 데이터를 핸들링 할 수 있습니다.
import kotlinx.serialization.json.Json import kotlinx.serialization.encodeToString import kotlinx.serialization.decodeFromString fun main() { val json = Json.encodeToString(Data(42, "str")) println(json) // {"a":42,"b":"str"} val obj = Json.decodeFromString<Data>(json) println(obj) // Data(a=42, b=str) }
또한 value 클래스도 지원됩니다.
import kotlinx.serialization.Serializable @Serializable value class Color(val rgb: Int)
Json 메서드에서 value 클래스를 파라미터로 활용할 수 있습니다.
value 클래스는 예전의 inline 클래스로 데이터 확장성을 보장합니다.
import kotlinx.serialization.json.Json import kotlinx.serialization.encodeToString fun main() { varl json = Json.encodeToString(NamedColor(Color(0), "black")) println(json) // {"color": 0, "name": "black"} }
아래 페이지에서 자세한 내용을 확인할 수 있습니다.