왼쪽에 Kotlin을 붙여넣고 "변환"을 누르세요 — JSON으로 바꿔드립니다Kotlin 코드를 붙여넣으세요

이 도구가 하는 일

유닛 테스트, 픽스처, API 호출을 위해 Kotlindata class에 맞춘 JSON 페이로드를 손으로 써 본 적이 있다면 얼마나 번거로운 작업인지 아실 겁니다. 보통은 kotlinx.serialization을 끌어와 클래스에 어노테이션을 달고 앱을 실행해 출력을 뽑아내는 흐름입니다. 여기에 Kotlin을 붙여넣으면 Gradle 플러그인도, @Serializable도, 런타임도 없이 바로 유효한 JSON을 얻을 수 있습니다.

이 변환기는 Kotlin 값이 실제로 직렬화되는 방식을 그대로 따릅니다. val price: Double = 49.99는 JSON 숫자, val tags: List<String>는 JSON 배열, val address: Address?null이면 JSON null이 됩니다. kotlin.stdlibInstant, LocalDate, LocalDateTime은 ISO-8601 문자열로, UUID는 표준 hex 문자열로 나옵니다. Map<String, V>는 JSON 객체가 되고, enum class 값은 문자열 이름으로 출력됩니다 — Gson이나 jackson-module-kotlin에서 나오는 동작과 동일합니다.

직렬화 어노테이션도 그대로 반영됩니다. @SerialName("x")는 JSON 키 이름을 바꾸고, @Transient는 프로퍼티를 제외합니다. 명시적으로 지정되지 않은 프로퍼티의 기본 파라미터 값도 함께 출력됩니다. 여러 data class를 한 번에 붙여넣으면 각각 최상위 항목으로 나오고, 중첩 타입은 전개되며 sealed class 계층은 배리언트로 평탄화됩니다. Android 앱을 출시 중이라면 결과물을 그대로 Retrofit 픽스처나 Room 테스트 seed에 넣을 수 있습니다.

사용 방법

세 단계입니다. 인스턴스 하나만 붙여넣든 data class가 가득 들어있는 파일 전체를 붙여넣든 방식은 같습니다.

1

Kotlin 붙여넣기(또는 샘플 불러오기)

왼쪽 에디터에 Kotlin을 있는 그대로 넣으세요. data class, 일반 클래스, object 선언, 여러 클래스, sealed 계층 — 모두 괜찮습니다. 먼저 실제 예시를 보고 싶다면 샘플 불러오기를 눌러보세요.

import, 패키지 선언, 어노테이션을 떼어낼 필요는 없습니다. Kotlin 문법을 그대로 두세요 — companion object와 backing field도 그대로 처리됩니다.

2

변환 누르기

초록색 변환 버튼을 클릭하세요. 도구가 Kotlin을 읽고, 모든 data class와 프로퍼티를 보존한 상태로 한 번에 JSON을 내놓습니다. 작업 중에는 짧게 로딩 인디케이터가 표시됩니다.

3

JSON 복사하기

오른쪽 패널이 들여쓰기된 JSON으로 채워집니다. Retrofit 테스트, Room 픽스처, OpenAPI 예제, REST 클라이언트 어디에 붙여넣든 바로 사용할 수 있습니다. 작업 끝.

실제로 유용한 순간

Android 앱 API 픽스처

Retrofit 요청 모델이 있고 MockWebServer나 Postman에 넣을 JSON 페이로드가 필요할 때 — data class를 붙여넣고 JSON을 받아서 바로 다음 작업으로.

백엔드 테스트 데이터

data class가 30개쯤 있는 Ktor나 Spring 서비스. 각각을 통합 테스트용 JSON seed 파일로 변환하는데 <code>@Serializable</code> 어노테이션은 한 줄도 쓰지 않아도 됩니다.

항상 최신인 문서

실제 data class에서 바로 OpenAPI 스펙이나 API 레퍼런스용 JSON 예시를 생성하니, 문서가 모델과 어긋날 일이 없습니다.

설정 파일 시작 템플릿

프로퍼티 20여 개짜리 Settings data class도 바로 편집 가능한 JSON 템플릿으로 변합니다 — 손으로 쓰는 보일러플레이트 없이요.

자주 묻는 질문

kotlinx.serialization이나 Jackson을 설치해야 하나요?

아니요. 이 도구는 서버에서 동작하고 코드를 컴파일하지 않습니다 — 어떤 플러그인도 필요 없이 JSON이 나옵니다. 앱 안에서 런타임 직렬화가 필요하다면 네이티브 선택지는 kotlinx.serialization이고, jackson-module-kotlin도 잘 작동합니다.

@SerialName, @Transient, @JsonProperty를 반영하나요?

네. @SerialName("x")@JsonProperty("x")는 JSON 키를 변경하고, @Transient / @JsonIgnore는 해당 프로퍼티를 출력에서 제외합니다 — kotlinx.serialization 의미론과 맞춥니다.

Instant, LocalDate, UUID는 어떻게 되나요?

Instant, LocalDate, LocalDateTime, ZonedDateTime 모두 ISO-8601 문자열로 나옵니다. UUID는 표준 8-4-4-4-12 hex 문자열이 됩니다. Duration은 duration 문자열이 됩니다.

nullable, sealed class, enum은 어떻게 처리되나요?

값이 null인 nullable 프로퍼티는 JSON null이 되고, 그렇지 않으면 내부 타입이 평소대로 직렬화됩니다. sealed class 인스턴스는 기본적으로 타입 디스크리미네이터를 포함합니다(kotlinx.serialization을 사용하면 설정 가능). enum은 별도 어노테이션이 없다면 문자열 이름으로 나옵니다.

제 코드가 저장되나요?

코드는 변환을 위해 백엔드로 전송되며 저장되지 않습니다 — 페이로드를 로그에 남기지도 않습니다. 늘 그렇듯이 민감한 코드는 붙여넣기 전에 한 번 훑어보세요.

Kotlin/JVM과 Kotlin Multiplatform 코드 모두 동작하나요?

네. 문법이 유효한 Kotlin이라면 대상이 JVM, JS, Native, Multiplatform 무엇이든 상관없습니다. JSON 표현이 없는 플랫폼별 타입(Job, Flow 등)은 null로 출력됩니다.

함께 쓰면 좋은 도구

Kotlin → JSON은 퍼즐의 한 조각입니다. 다음 도구들과 잘 어울립니다: