Home
Kotlin
Kotlin Json 직렬화 (kotlinx.serialization)
devfoxstar
devfoxstar
March 19, 2023
1 min

Table Of Contents

01
사용 방법
02
참고

Kotlin에서 Json을 직렬화하는 방법을 알아보겠습니다.
기존에는 JacksonGson 라이브러리를 주로 활용했습니다.

최근에 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"}
}

참고


아래 페이지에서 자세한 내용을 확인할 수 있습니다.

  • https://kotlinlang.org/docs/serialization.html
  • https://github.com/Kotlin/kotlinx.serialization
  • https://blog.jetbrains.com/ko/kotlin/2021/05/kotlinx-serialization-1-2-released/

Tags

#Kotlin#Json#Serialization

Related Posts

Kotlin - invoke 함수
May 29, 2023
1 min
© 2024, All Rights Reserved.

Quick Links

About Me

Media