JSON 직렬화 개요

JSON 직렬화 개요

Kotlin 직렬화 라이브러리로 Kotlin 객체를 JSON으로, 그리고 다시 Kotlin 객체로 쉽게 변환하는 방법을 소개할게요.

출처: JSON serialization overview

본문

Kotlin 직렬화 라이브러리를 사용하면 Kotlin 객체를 JSON으로, 그리고 다시 그 반대로 쉽게 변환할 수 있어요. 이를 위한 핵심 도구는 Json 클래스이며, JSON을 생성하고 파싱하는 방식을 유연하게 제어할 수 있어요. 특정 JSON 동작을 처리하도록 Json 인스턴스를 구성하거나, 기본 작업에는 기본 인스턴스를 사용할 수 있어요.

Json 클래스를 사용하면 다음과 같은 일을 할 수 있어요.

시작하기 전에 직렬화 라이브러리에서 다음 선언을 임포트하세요.

import kotlinx.serialization.*
import kotlinx.serialization.json.*

다음은 기본 Json 인스턴스를 사용해 Kotlin에서 JSON 직렬화가 어떻게 동작하는지 보여 주는 간단한 예시예요.

// Imports declarations from the serialization library
import kotlinx.serialization.*
import kotlinx.serialization.json.*

//sampleStart
@Serializable
data class User(val name: String, val age: Int)

fun main() {
    // Uses the default Json instance
    val json = Json

    // Creates a User object
    val user = User("Alice", 30)

    // Converts the User object to a JSON string
    val jsonString = json.encodeToString(user)
    println(jsonString)
    // {"name":"Alice","age":30}

    // Converts the JSON string back to a User object
    val deserializedUser = json.decodeFromString<User>(jsonString)
    println(deserializedUser)
    // User(name=Alice, age=30)
//sampleEnd
}

기본 구성을 사용하는 것 외에도, 알 수 없는 키를 무시하는 것 같은 특정 사용 사례에 맞게 Json 인스턴스를 사용자 정의할 수 있어요.

// Imports declarations from the serialization library
import kotlinx.serialization.*
import kotlinx.serialization.json.*

//sampleStart
@Serializable
data class Project(val name: String)

// Configures a Json instance to ignore unknown keys
val customJson = Json {
    ignoreUnknownKeys = true
}

fun main() {
    val data = customJson.decodeFromString<Project>("""
        {"name":"kotlinx.serialization","language":"Kotlin"}
    """)
    println(data)
    // Project(name=kotlinx.serialization)
}
//sampleEnd

다음 단계

더 알아보기