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에 반드시 추가하세요.
Continue Learning
Kotlin 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.