Tool Kumar 도구

JSON을 Kotlin 데이터 클래스로 변환

예시 JSON을 kotlinx.serialization용 데이터 클래스로 바꿉니다. 중첩 객체는 각자 클래스가 되고, 배열은 List 값이 되며, 이름이 바뀐 필드는 @SerialName으로 원래 JSON 키 이름을 유지합니다.

도구 사용 방법

  1. 필드 구성이 서로 다른 레코드까지 포함해 대표적인 응답을 붙여넣습니다.
  2. 생성된 출력을 검토하고, 필요하면 ‘루트 이름’을 바꿉니다.
  3. 코드를 복사하거나 다운로드한 뒤, 타입이 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 런타임을 설정해야 합니다.

관련 도구

JSON을 Java 레코드로 변환, JSON을 Dart 모델로 변환 및 JSON Schema 생성기.