본문으로 건너뛰기

JSON을 TypeScript, Go, Python 타입으로 변환

JSON 샘플을 붙여넣으면 TypeScript 인터페이스, Zod 스키마, Go 구조체, Python, Java, C#, Kotlin, Swift, Rust 타입을 브라우저에서 바로 만들어 줘요.

여러 샘플(이어 붙인 경우나 JSON Lines)과 배열 안의 객체는 하나로 합쳐져요. 일부에 없는 키는 선택 항목이 되고, null 값은 null 허용 타입이 돼요.

TypeScript
샘플을 붙여넣고 타입 생성을 누르세요.
선언 방식
브라우저에서 실행 · 업로드 없음작동 방식

JSON 타입 변환 사용 방법

  1. 1

    JSON 샘플 붙여넣기

    응답 하나, 레코드 배열, 또는 여러 응답을 연달아 붙여넣으세요. 샘플에는 합쳐진 사용자 두 명이 들어 있어요.

  2. 2

    언어 선택

    TypeScript, Zod, Go, Python, Java, C#, Kotlin, Swift, Rust 중에서 고르고 해당 스타일 옵션을 설정하세요.

  3. 3

    루트 타입 이름 정하기

    최상위 타입의 이름을 정하세요. 예를 들면 User나 OrderResponse가 있어요.

  4. 4

    생성 후 복사

    타입 생성을 누른 다음 코드를 복사하거나 다운로드하세요. 설정을 바꾸면 자동으로 다시 생성돼요.

제한 및 Pro

회원가입 없이 무료: 출력 언어 9개와 Python 스타일 3가지, 합칠 수 있는 샘플 수 제한 없음, 파일은 최대 20 MB까지, 생성은 30초 후 중단돼요.

Pro는 광고를 없애 줘요. 생성기는 어떤 요금제에서나 같아요. Pro 보기

JSON 타입 변환 소개

API 응답에 맞춰 타입을 손으로 작성하면 시간이 오래 걸리고 실수도 잦아요. 페이로드가 3단계로 중첩돼 있다면 더 그렇죠. JSON 샘플을 하나 이상 붙여넣으면 이 생성기가 구조를 추론해서 바로 붙여넣어 쓸 수 있는 정의를 9가지 형태로 만들어 줘요. TypeScript 인터페이스 또는 타입 별칭, 런타임 검증용 Zod 스키마를 곁들인 TypeScript, json 태그가 달린 Go 구조체, Python dataclass·TypedDict·Pydantic v2 모델, Jackson 어노테이션을 쓴 Java record, System.Text.Json용 C# 클래스, kotlinx.serialization용 Kotlin 데이터 클래스, Swift Codable 구조체, serde용 Rust 구조체를 지원해요.

샘플 하나에 모든 필드가 나타나는 경우는 드물어서, 생성기는 입력한 샘플을 모두 합쳐서 분석해요. 문서를 연달아 붙여넣거나 JSON Lines, 객체 배열로 넣을 수 있어요. 일부 객체에 없는 키는 선택 항목이 되고, 가끔 null인 키는 null 허용 타입이 되며, 가끔 소수인 정수는 실수형이 돼요. 값이 정말 섞여 있으면 유니온이나 해당 언어의 동적 JSON 타입으로 만들어요. 중첩 객체에는 이름이 붙은 타입이 따로 생겨요. orders는 Order, addresses는 Address가 되고, 모양이 같은 객체는 한 번만 생성해서 재사용해요. 키가 숫자, UUID, 날짜인 객체는 맵으로 바꿔요.

필드 이름은 각 언어의 관례에 맞게 변환하고, first-name이나 class처럼 달라지는 JSON 키는 알맞은 어노테이션, 별칭, CodingKeys로 원래 이름에 다시 연결해요. 샘플에 주석이나 끝에 붙은 쉼표가 있어도 괜찮아요.

결과는 입력한 샘플을 기준으로 만들어져요. 샘플에 없는 필드나 값은 생성기가 알 수 없으니, 사용하기 전에 API 문서와 꼭 비교해 보세요.

개인정보 보호

샘플 분석과 코드 생성은 이 탭의 Web Worker에서 처리해요. 개인정보나 내부 데이터가 담긴 API 응답도 업로드되지 않아요. 언어와 이름 옵션은 로컬 저장소에 저장되고, 붙여넣은 JSON은 저장되지 않아요.

기능

여러 샘플 합치기

붙여넣은 모든 샘플을 기준으로 없는 키는 선택 항목, null 값은 null 허용 타입이 돼요.

9개 언어 지원

TypeScript, Zod, Go, Python, Java, C#, Kotlin, Swift, Rust를 각 언어의 관례에 맞는 이름으로 생성해요.

키 매핑 포함

json 태그, 별칭, @SerialName, @JsonProperty, CodingKeys로 원래 JSON 이름을 유지해요.

JSON 타입 변환: 자주 묻는 질문

선택 항목 여부는 어떻게 정하나요?
같은 위치의 객체 중 하나라도 해당 키가 없으면 그 필드는 선택 항목이 돼요. 객체를 하나만 붙여넣으면 다른 정보가 없어서 모든 필드가 필수예요. 실제 응답을 여러 개 붙여넣거나 레코드 배열을 사용하면 어떤 키가 있다 없다 하는지 생성기가 파악할 수 있어요. 모든 필드를 선택 항목으로 설정은 부분 수정이나 패치용 페이로드에 쓰는 옵션이에요.
값이 가끔 null이면 어떻게 되나요?
필드가 null 허용 타입이 돼요. TypeScript는 string | null, Go는 포인터, Python은 str | None, Kotlin과 Swift는 String?, Rust는 Option<String>이고, Java와 C#에서는 박싱 타입이나 null 허용 타입이 돼요. 모든 샘플에서 null인 필드는 추론할 타입이 없어서 해당 언어의 unknown 또는 동적 JSON 타입이 돼요.
정수가 왜 실수형으로 바뀌었나요?
같은 필드에 한 샘플은 7, 다른 샘플은 7.5가 있으면 두 값을 모두 담아야 해서 float나 double이 돼요. 10.0처럼 소수점이 붙은 숫자도 소수로 간주해요. TypeScript에서는 둘 다 number이고, Zod에서는 정수만 있는 필드를 z.number().int()로 검사해요.
quicktype과 같은 도구인가요?
같은 문제를 푸는 도구지만 자체 생성기를 쓰고, 모든 과정이 브라우저에서 실행돼요. TypedDict를 포함한 Python 스타일 3가지, Zod 스키마, 여러 문서 합치기도 더해졌고요. quicktype은 더 많은 언어를 지원하고 JSON Schema도 읽을 수 있어요. 여기서 지원하는 9개 언어는 별도의 런타임 도우미 없이 컴파일되도록 만들었어요.
날짜, enum, UUID도 감지하나요?
아니요. 문자열은 문자열로 남아요. 샘플 몇 개만으로는 앞으로 오는 모든 값이 날짜이거나 정해진 값 중 하나라고 확신할 수 없기 때문이에요. API가 보장하는 곳에서는 생성된 타입을 Date, time.Time, datetime, enum, UUID 타입으로 직접 바꿔 주세요. 키가 UUID, 숫자, 날짜인 객체만 예외로, 맵이 돼요.