JSON → Kotlin Data Class 변환기

JSON에서 Kotlin data class를 생성하고, toJson·fromJson 헬퍼도 함께 제공합니다.

JSON에서 Kotlin data class 생성

Kotlin data class는 Android와 JVM에서 JSON을 다룰 때 가장 자연스러운 모델 타입입니다. 이 변환기는 객체마다 불변 val 속성을 가진 data class를 하나씩 생성합니다. 정수는 Long, 소수는 Double, 배열은 List<T>, 중첩 객체는 별도의 data class가 됩니다. 생성된 코드는 Klaxon 라이브러리를 사용하며 toJson 메서드와 companion fromJson 함수를 추가하므로, 한 번의 호출로 JSON 문자열을 타입이 지정된 객체로 바꿀 수 있습니다.

사용 방법

  1. Android 앱이 받는 응답 같은 JSON 샘플을 붙여넣습니다.
  2. 루트 클래스 이름을 입력합니다. 예: Movie.
  3. Klaxon 의존성을 추가하고 클래스를 패키지 안의 .kt 파일에 붙여넣은 뒤 Movie.fromJson(jsonString)을 호출합니다.

자주 묻는 질문

kotlinx.serialization, Moshi, Gson과 함께 사용할 수 있나요?
네. data class 선언은 순수 Kotlin 코드입니다. Klaxon 헬퍼를 제거하고 각 클래스에 사용하는 라이브러리의 어노테이션(예: kotlinx.serialization의 @Serializable)을 추가하세요.
nullable 필드는 어떻게 생성되나요?
샘플 일부에서 null이거나 누락된 필드는 String? 같은 nullable 타입이 되므로, Kotlin의 null 안전성 덕분에 해당 경우를 반드시 처리하게 됩니다.
Int 대신 Long을 쓰는 이유는 무엇인가요?
JSON 정수에는 크기 제한이 없으므로 Long으로 오버플로를 방지합니다. 연도나 개수처럼 값이 작다는 것을 알고 있다면 속성을 Int로 바꿔도 됩니다.

예시: JSON to Kotlin

입력 JSON

{
  "id": 12,
  "title": "Arrival",
  "year": 2016,
  "genres": ["sci-fi", "drama"],
  "rating": 7.9
}

생성된 Kotlin 코드 (Movie)

// To parse the JSON, install Klaxon and do:
//
//   val movie = Movie.fromJson(jsonString)

package quicktype

import com.beust.klaxon.*

private val klaxon = Klaxon()

data class Movie (
    val id: Long,
    val title: String,
    val year: Long,
    val genres: List<String>,
    val rating: Double
) {
    public fun toJson() = klaxon.toJsonString(this)

    companion object {
        public fun fromJson(json: String) = klaxon.parse<Movie>(json)
    }
}

다른 언어로 JSON 변환