KOTLIN · 파일/IO
kotlinx.serialization JSON
Kotlin 공식 직렬화 라이브러리로 data class를 JSON으로 변환합니다.
파일/IO중급kotlinx.serializationJSON@Serializable@SerialName직렬화
핵심 설명
Kotlin 공식 직렬화 라이브러리로 data class를 JSON으로 변환합니다.
Kotlin code
<span class="kw">import</span> <span class="pk">kotlinx.serialization.*</span>
<span class="kw">import</span> <span class="pk">kotlinx.serialization.json.*</span>
<span class="an">@Serializable</span>
<span class="kw">data class</span> <span class="ty">User</span>(
<span class="kw">val</span> id: <span class="ty">Int</span>,
<span class="kw">val</span> name: <span class="ty">String</span>,
<span class="an">@SerialName</span>(<span class="str">"email_address"</span>)
<span class="kw">val</span> email: <span class="ty">String</span>,
<span class="kw">val</span> active: <span class="ty">Boolean</span> = <span class="kw">true</span>
)
<span class="kw">fun</span> <span class="fn">main</span>() {
<span class="kw">val</span> json = Json {
prettyPrint = <span class="kw">true</span>
ignoreUnknownKeys = <span class="kw">true</span>
encodeDefaults = <span class="kw">false</span>
}
<span class="kw">val</span> user = User(<span class="num">1</span>, <span class="str">"Alice"</span>, <span class="str">"alice@test.com"</span>)
<span class="cm">// 직렬화</span>
<span class="kw">val</span> jsonStr = json.<span class="fn">encodeToString</span>(user)
<span class="fn">println</span>(jsonStr)
<span class="cm">// 역직렬화</span>
<span class="kw">val</span> decoded = json.<span class="fn">decodeFromString</span><<span class="ty">User</span>>(jsonStr)
<span class="fn">println</span>(decoded.name)
<span class="cm">// 리스트 직렬화</span>
<span class="kw">val</span> users = listOf(user, user.copy(id = <span class="num">2</span>, name = <span class="str">"Bob"</span>))
<span class="fn">println</span>(json.<span class="fn">encodeToString</span>(users))
}학습 팁
ignoreUnknownKeys = true를 설정하면 API 응답에 새 필드가 추가돼도 에러 없이 역직렬화됩니다. 실제 프로젝트에서는 기본으로 켜두는 것을 권장합니다.
주의할 점
@Serializable을 빠뜨리면 SerializationException이 런타임에 발생합니다. KAPT/KSP 설정도 함께 필요합니다: plugins { kotlin("plugin.serialization") }
자주 묻는 질문
kotlinx.serialization JSON란 무엇인가요?
Kotlin 공식 직렬화 라이브러리로 data class를 JSON으로 변환합니다.
kotlinx.serialization JSON 학습 시 주의할 점은 무엇인가요?
@Serializable 을 빠뜨리면 SerializationException 이 런타임에 발생합니다. KAPT/KSP 설정도 함께 필요합니다: plugins { kotlin("plugin.serialization") }
Continue Learning
Kotlin 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.