PHpullh
학습 라이브러리/Kotlin/JSON 직렬화 (kotlinx.serialization)

KOTLIN · 파일/IO

JSON 직렬화 (kotlinx.serialization)

kotlinx.serialization으로 타입 안전한 JSON 직렬화/역직렬화를 수행합니다.

파일/IO중급jsonserializationkotlinxdeserialization

핵심 설명

kotlinx.serialization으로 타입 안전한 JSON 직렬화/역직렬화를 수행합니다.

Kotlin code

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

@Serializable
data class User(
    val name: String,
    val age: Int,
    val email: String? = null,
    @SerialName("is_active")
    val isActive: Boolean = true
)

@Serializable
data class ApiResponse<T>(
    val status: String,
    val data: T,
    val timestamp: Long = System.currentTimeMillis()
)

fun main() {
    val json = Json {
        prettyPrint = true
        ignoreUnknownKeys = true
        encodeDefaults = false
    }

    // 직렬화
    val user = User("김철수", 30, "kim@test.com")
    val jsonStr = json.encodeToString(user)
    println(jsonStr)

    // 역직렬화
    val parsed = json.decodeFromString<User>("""
        {"name":"이영희","age":25,"is_active":false,"unknown":"ignored"}
    """.trimIndent())
    println(parsed)

    // 제네릭 타입
    val response = ApiResponse("ok", listOf(user))
    println(json.encodeToString(response))
}

학습 팁

ignoreUnknownKeys = true로 설정하면 JSON에 추가 필드가 있어도 예외 없이 무시합니다. API 호환성에 유용합니다.

주의할 점

@Serializable 어노테이션을 누락하면 런타임에 SerializationException이 발생합니다. data class에 반드시 추가하세요.

자주 묻는 질문

JSON 직렬화 (kotlinx.serialization)란 무엇인가요?

kotlinx.serialization 으로 타입 안전한 JSON 직렬화/역직렬화를 수행합니다.

JSON 직렬화 (kotlinx.serialization) 학습 시 주의할 점은 무엇인가요?

@Serializable 어노테이션을 누락하면 런타임에 SerializationException 이 발생합니다. data class에 반드시 추가하세요.