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 문자열을 타입이 지정된 객체로 바꿀 수 있습니다.
사용 방법
- Android 앱이 받는 응답 같은 JSON 샘플을 붙여넣습니다.
- 루트 클래스 이름을 입력합니다. 예: Movie.
- 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)
}
}