0Pricing
Kotlin Academy · 강의

직렬화 가능한 클래스

모델에 주석을 추가합니다

직렬화 가능한 클래스은(는) CoddyKit의 무료 Kotlin Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Kotlin Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Kotlin Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

@Serializable 어노테이션

클래스를 직렬화할 수 있도록 @Serializable을 지정합니다. 그러면 컴파일러 플러그인이 해당 클래스의 직렬화기를 생성합니다.

import kotlinx.serialization.Serializable

@Serializable
data class User(val id: Int, val name: String)

데이터 클래스와 함께 사용하기

어떤 클래스에도 지정할 수 있지만, 데이터 클래스는 equals, hashCode, toString을 자동으로 생성하므로 모델에 가장 흔히 사용됩니다.

모든 생성자 속성은 직렬화되는 필드가 됩니다.

기본값

기본값이 있는 속성은 디코딩할 때 선택 사항이 됩니다. JSON에 해당 속성이 없으면 기본값이 사용됩니다.

@Serializable
data class Config(
    val host: String,
    val port: Int = 8080,
    val secure: Boolean = false
)

널 허용 속성

널 허용 형식은 JSON null로 매핑됩니다. 기본값이 없는 널 허용 속성도 JSON에서는 필수입니다(단, 값은 null일 수 있습니다).

@Serializable
data class Profile(
    val name: String,
    val bio: String? = null
)

@SerialName으로 필드 이름 바꾸기

JSON 필드 이름은 코틀린 명명 규칙과 다른 경우가 많습니다. @SerialName을 사용하여 매핑하세요.

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class Account(
    @SerialName("user_id") val userId: Int,
    @SerialName("full_name") val fullName: String
)

@Transient로 속성 무시하기

속성에 @Transient를 지정하면 직렬화에서 제외됩니다. 일시적 속성은 반드시 기본값을 가져야 합니다.

import kotlinx.serialization.Transient
import kotlinx.serialization.Serializable

@Serializable
data class Session(
    val token: String,
    @Transient val cachedAt: Long = 0L
)

중첩된 직렬화 가능 클래스

직렬화 가능한 클래스에는 다른 직렬화 가능 클래스가 포함될 수 있습니다. 플러그인이 전체 구조를 자동으로 처리합니다.

@Serializable
data class Address(val city: String, val zip: String)

@Serializable
data class Company(val name: String, val address: Address)

모델의 컬렉션

List, Set, Map과 같은 표준 컬렉션은 요소도 직렬화 가능하면 별도의 설정 없이 직렬화됩니다.

@Serializable
data class Team(
    val name: String,
    val members: List<String>,
    val scores: Map<String, Int>
)

열거형도 지원됩니다

열거형 클래스에는 @Serializable을 지정할 수 있으며, 기본적으로 이름으로 직렬화됩니다. 항목에 @SerialName을 사용하여 이름을 사용자 지정하세요.

@Serializable
enum class Role {
    @SerialName("admin") ADMIN,
    @SerialName("user") USER
}

필수와 선택 사항 요약

속성에 기본값이 없으면 JSON에서 필수입니다. 주요 규칙은 다음과 같습니다:

  • 기본값 없음 → 필수
  • 기본값 있음 → 선택 사항
  • @Transient → 무시되며 기본값이 있어야 함
  • 기본값이 없는 널 허용 속성 → 필수이지만 null일 수 있음

직접 직렬화할 수 없는 형식

내장 직렬화기가 없는 형식(예: java.util.Date, java.time.Instant, UUID)에는 사용자 지정 직렬화기가 필요하며, 이는 나중에 학습합니다.

직렬화기 없이 이러한 형식을 직렬화하려고 하면 컴파일 오류가 발생합니다.

빠른 확인

@Transient에 대한 설명 중 올바른 것은 무엇인가요?

복습

모델에 어노테이션을 지정하는 방법을 학습했습니다:

  • 클래스에 @Serializable 지정
  • 기본값이 있으면 필드가 선택 사항이 됨
  • @SerialName으로 JSON 키 이름 변경
  • @Transient로 필드 제외(기본값 필요)

다음에는 JSON을 실제로 인코딩하고 디코딩합니다.

자주 묻는 질문

“직렬화 가능한 클래스” 강의는 무료인가요?

네 — “직렬화 가능한 클래스” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Kotlin Academy 강의 전체를 잠금 해제할 수 있습니다. Kotlin Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“직렬화 가능한 클래스”에서 뭘 배우나요?

모델에 주석을 추가합니다 브라우저에서 직접 실행하는 실습 코드로 Kotlin Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Kotlin Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Kotlin Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“직렬화 가능한 클래스” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Kotlin Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Kotlin Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. kotlinx.serialization 설정
  2. 직렬화 가능한 클래스
  3. JSON 인코딩과 디코딩
  4. 사용자 지정 직렬화기
← Kotlin Academy(으)로 돌아가기