본문으로 건너뛰기
AZ Tools

JSON to Kotlin 데이터 클래스 변환기

JSON 객체를 타입이 지정된 프로퍼티가 포함된 Kotlin 데이터 클래스로 브라우저에서 변환합니다.

Kotlin 데이터 클래스

사용법

  1. 입력 상자에 JSON을 붙여넣거나 입력합니다.
  2. 필요하면 루트 클래스 이름을 변경합니다(기본값 AutoGenerated).
  3. 출력 상자에서 생성된 데이터 클래스를 복사합니다.
  4. API가 생략할 수 있는 프로퍼티에는 물음표를 붙이세요. 표본 하나로는 어떤 필드가 선택적인지 알 수 없습니다.

자세한 설명

펼치기

JSON 객체나 배열을 붙여넣으면 타입이 지정된 val 프로퍼티를 가진 Kotlin data class 정의와, 값을 담고 있던 키의 이름을 딴 중첩 객체용 별도 클래스를 바로 얻을 수 있습니다. 정수는 Long, 소수는 Double이 되는데, 큰 ID나 타임스탬프가 Int를 넘치지 않도록 일부러 넉넉하게 잡은 기본값입니다. JSON null은 Any?가 됩니다. 표본 하나로는 어떤 타입이 와야 하는지 알 수 없기 때문이며, 빈 배열은 List<Any>가 됩니다. 구조를 문서 하나에서 추론하므로 직접 손봐야 할 부분은 널 허용 여부입니다. 표본에 우연히 들어 있었을 뿐인 필드도 널이 아닌 타입으로 생성되니, API가 생략할 수 있는 자리에는 물음표를 붙이세요. 모든 처리는 브라우저에서 이루어지며 JSON은 업로드되지 않습니다.

자주 묻는 질문

숫자는 어떤 타입이 되나요?

정수는 Long, 소수점이 있는 숫자는 Double로 변환됩니다. 더 좁은 타입을 원하면 Int나 Float로 직접 변경하세요.

null이나 빈 배열은 어떻게 처리되나요?

샘플로 타입을 추론할 수 없으므로 null은 nullable Any?로, 빈 배열은 List<Any>로 변환됩니다.

중첩 객체는 어떻게 처리되나요?

각 중첩 객체는 자체 data class가 됩니다. data class는 최소 한 개의 프로퍼티가 필요하므로 빈 객체는 일반 class가 됩니다.

제 JSON이 어딘가로 전송되나요?

아니요. 변환은 전적으로 브라우저에서 이루어지며 아무것도 업로드되지 않습니다.

어떤 필드를 널 허용으로 바꿔야 하나요?

API가 생략하거나 null로 보낼 수 있는 필드 전부입니다. 표본만으로는 그것이 어느 것인지 알 수 없습니다. 물음표를 붙이면 기본값도 줄 수 있어서, 서버가 어떤 필드를 빼기 시작해도 예전 클라이언트가 계속 동작합니다.

이 데이터 클래스를 kotlinx.serialization과 함께 쓸 수 있나요?

@Serializable 애너테이션과 플러그인을 추가하면 됩니다. JSON 키가 코틀린 이름으로 유효하지 않거나 전송상의 표기 대신 카멜 케이스 프로퍼티를 쓰고 싶다면, 이름을 바꿔 매핑을 깨뜨리지 말고 프로퍼티에 @SerialName을 붙이세요.

관련 도구