Tool Kumar 도구
JSON을 Kotlin 데이터 클래스로 변환
예시 JSON을 kotlinx.serialization용 데이터 클래스로 바꿉니다. 중첩 객체는 각자 클래스가 되고, 배열은 List 값이 되며, 이름이 바뀐 필드는 @SerialName으로 원래 JSON 키 이름을 유지합니다.
도구 사용 방법
- 필드 구성이 서로 다른 레코드까지 포함해 대표적인 응답을 붙여넣습니다.
- 생성된 출력을 검토하고, 필요하면 ‘루트 이름’을 바꿉니다.
- 코드를 복사하거나 다운로드한 뒤, 타입이 API 명세와 맞는지 확인합니다.
사용 예제
내장 변환기가 생성한 출력입니다. 두 항목의 price 값에서는 부동소수점 필드가, null과 문자열인 note 값에서는 null 허용 필드가 추론됩니다.
입력
{
"user-id": 42,
"profile": {
"city": "London",
"created_at": "2026-10-14T09:00:00Z"
},
"items": [
{
"price": 12,
"note": null
},
{
"price": 12.5,
"note": "gift"
}
]
}출력
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
data class Root(
@SerialName("user-id") val userId: Long,
val profile: Profile,
val items: List<Item>,
)
@Serializable
data class Profile(
val city: String,
@SerialName("created_at") val createdAt: String,
)
@Serializable
data class Item(
val price: Double,
val note: String? = null,
)
Android API 응답 디코딩하기
앱에서 Kotlin serialization 컴파일러 플러그인을 활성화하고 kotlinx.serialization JSON 의존성을 추가합니다. 생성된 Root 타입을 Json.decodeFromString과 함께 사용합니다.
ignoreUnknownKeys를 켜면 서버에 새 필드가 추가되어도 디코딩이 실패하지 않습니다. API 정책상 알 수 없는 필드를 허용할 때만 설정합니다.
import kotlinx.serialization.json.Json
val json = Json { ignoreUnknownKeys = true }
val model = json.decodeFromString<Root>(responseBody)옵션 및 예외 사항
- 생성기는 데이터 클래스마다 @Serializable을 붙이고 kotlinx.serialization 어노테이션을 import합니다. Moshi의 @Json이나 Gson의 @SerializedName은 생성하지 않습니다.
- 정수는 Long, 소수는 Double을 쓰고, null로만 관찰되거나 타입이 섞인 값은 JsonElement를 씁니다. null 허용 필드의 기본값은 null입니다.
- 부호 있는 64비트 범위를 넘는 정수는 Double이 되어 정밀도를 잃을 수 있습니다. 정확도가 필요한 식별자에는 문자열이나 사용자 정의 직렬화기를 사용합니다.
- 날짜 문자열은 String으로 남습니다. 샘플 하나만으로는 어떤 필드가 모든 API 응답에 반드시 들어 있는지 알 수 없습니다.
개인정보 보호 기본 적용
문서는 이 브라우저에만 보관됩니다. Tool Kumar는 기기 안에서 파싱, 변환, 다운로드 파일 생성을 처리하며 계정이나 업로드 과정이 필요하지 않습니다.
JSON을 Kotlin 데이터 클래스로 변환 자주 묻는 질문
- 어떤 Kotlin 직렬화 라이브러리를 사용하나요?
- kotlinx.serialization입니다. 출력은 @Serializable을 사용하고, Kotlin 프로퍼티 이름이 JSON 키와 다르면 @SerialName을 추가합니다.
- Moshi와 함께 쓸 수 있나요?
- 필드 타입을 바탕으로 모델 작성을 시작할 수 있지만, 어노테이션은 kotlinx.serialization용입니다. Android 앱에서 Moshi를 쓴다면 어노테이션을 바꾸고 Moshi 코드 생성을 설정해야 합니다.
- 누락된 필드와 null 필드는 어떻게 처리되나요?
- 배열의 일부 레코드에 없거나 null로 관찰된 필드는 null 허용이 되고 기본값은 null입니다. null이 아닌 필수 필드에는 기본값이 없습니다.
- Android용 Kotlin DTO를 만들 수 있나요?
- 네. DTO로 쓰기에 적합한 데이터 클래스를 만듭니다. 프로젝트에 Kotlin serialization 컴파일러 플러그인과 JSON 런타임을 설정해야 합니다.