JSON → TypeScript 변환 — Zod, Go, Python, Java, C#, Rust도 지원

JSON 샘플을 붙여 넣으면 TypeScript 인터페이스, Zod 스키마, JSON Schema, 또는 Go, Python, Java, C#, Kotlin, Swift, Rust 타입을 만들어 줍니다.

타입 생성기 불러오는 중(약 1MB, 처음 한 번만)…

타입은 샘플만 보고 추론합니다. 샘플에서 null인 필드는 null 또는 any가 되므로, 더 정확한 타입을 원하면 더 풍부한 샘플(또는 여러 레코드의 배열)을 붙여 넣으세요.

모든 처리는 브라우저 안에서 이루어집니다. JSON은 업로드되지 않으므로 실제 API 응답에도 안전합니다. 모든 무료 도구 보기.

문제를 발견하셨거나 개선할 점이 있나요? 모든 메시지를 읽고 빠르게 고칩니다.

이 무료 JSON → TypeScript 변환기는 API 응답이나 설정 파일 같은 JSON 샘플을 읽고, 중첩된 객체마다 이름 붙은 타입을 하나씩 만들어 그에 맞는 TypeScript 인터페이스를 작성합니다. 같은 입력으로 Zod 스키마, JSON Schema, Go 구조체, Python dataclass나 Pydantic 모델, Java, C#, Kotlin, Swift, Rust 클래스도 만들 수 있으니 더 이상 필드 이름을 손으로 입력하지 않아도 됩니다.

타입 추론에는 quicktype.io와 "Paste JSON as Code" 편집기 확장의 기반인 오픈 소스 엔진 quicktype을 브라우저에서 실행해 사용합니다. 배열 안의 모든 객체를 병합하므로 일부 레코드에만 있는 필드는 선택 사항이 됩니다. 보이는 것으로만 추론할 수 있다는 점에 유의하세요. 샘플에서 null인 필드는 null 타입이 되고, 빈 배열은 아무 타입이나 담는 배열이 됩니다. 가장 정확한 타입을 얻으려면 실제 값이 든 샘플이나 여러 레코드를 붙여 넣으세요.

사용 방법

  1. JSON 객체나 객체 배열을 붙여 넣으세요. 처음에는 샘플 사용자 레코드가 불러와져 있습니다.
  2. 출력을 고르세요: TypeScript 인터페이스, 타입 별칭, Zod, JSON Schema, Go, Python, Java, C#, Kotlin, Swift, Rust.
  3. 루트 타입 이름(예: User 또는 OrderResponse)을 설정하세요. 중첩된 타입은 키 이름을 따라 이름이 붙습니다.
  4. PATCH 본문처럼 일부만 담긴 페이로드라면 "모든 속성을 선택 사항(optional)으로"를 체크하세요. 언어가 지원하는 경우 직렬화 헬퍼를 받으려면 "타입만"의 체크를 해제하세요.
  5. 코드를 복사하거나 알맞은 확장자의 파일로 다운로드하세요.

자주 묻는 질문

JSON을 TypeScript 인터페이스로 어떻게 변환하나요?

TypeScript(인터페이스)를 선택한 상태에서 JSON을 상자에 붙여 넣으세요. 각 객체는 export된 인터페이스가 됩니다. 문자열은 string, 숫자는 number, 불리언은 boolean, 배열은 T[]가 되고, 중첩된 객체는 address → Address처럼 키 이름을 딴 자체 인터페이스를 갖습니다. 결과를 .ts 파일에 복사하고 응답을 파싱하는 곳에서 import하세요.

인터페이스와 타입 별칭 중 무엇을 써야 하나요?

객체 형태에 대해서는 거의 서로 바꿔 쓸 수 있습니다. 인터페이스는 확장할 수 있고 다시 선언해 병합할 수 있으며, 많은 스타일 가이드가 공개 객체 타입에 인터페이스를 선호합니다. 타입 별칭은 유니언과 매핑된 타입도 표현할 수 있습니다. 코드베이스가 그 스타일을 선호한다면 TypeScript(타입 별칭) 옵션이 `export type User = { ... }`를 생성합니다.

선택 사항 필드는 어떻게 감지하나요?

샘플에서 감지합니다. JSON이 객체 배열이고 일부 객체에 어떤 키가 없다면 그 속성은 선택 사항(name?: string)으로 표시됩니다. 모든 레코드에 있지만 값이 모두 null인 키는 null이 되고, 어떤 레코드에서는 문자열이고 다른 레코드에서는 null인 키는 null | string이 됩니다. 모든 속성을 선택 사항으로 만들려면 해당 옵션을 사용하세요.

TypeScript 인터페이스 대신 Zod 스키마를 쓰는 이유는 무엇인가요?

인터페이스는 컴파일 시점에만 존재하므로 API가 정말 기대한 것을 반환했는지 확인할 수 없습니다. Zod 스키마는 런타임에 데이터를 검증하고(필드가 없거나 타입이 틀리면 UserSchema.parse(data)가 예외를 던짐), z.infer로 TypeScript 타입도 제공하므로 정의 하나로 둘 다 해결됩니다. 생성된 Zod 코드는 스키마와 추론된 타입을 모두 export합니다.

날짜와 UUID도 감지하나요?

"문자열 속 날짜, UUID, 숫자 감지"를 켠 경우에만 감지합니다. JSON에는 날짜 타입이 없어서 기본값은 꺼져 있습니다. JSON.parse는 "2026-03-14T09:26:53Z"를 문자열로 반환하므로, 생성된 변환 코드도 함께 쓰지 않는 한 Date로 타입을 지정하면 틀리게 됩니다. 감지를 켜면 Go는 time.Time, C#은 DateTimeOffset과 Guid, Python은 datetime과 UUID를 받습니다.

JSON이 업로드되나요?

아니요. quicktype 라이브러리는 한 번(약 1 MB) 다운로드되어 브라우저 탭에서 실행됩니다. JSON은 어디로도 전송되지 않으므로 개인 정보가 담긴 실제 API 응답을 붙여 넣어도 안전합니다.

JSON 값이 각 언어에서 대응하는 타입

• 문자열: TypeScript, Go는 string, Swift와 Kotlin은 String, Python은 str, Java와 Rust는 String, C#은 string.

• 정수: TypeScript는 number, Go는 int64, Python은 int, Java는 long, Kotlin은 Long, C#은 long, Swift는 Int, Rust는 i64. 소수점이 있는 숫자는 float64, float, double이 됩니다.

• 불리언: 언어별 표기에 따라 boolean, bool, Boolean, Bool.

• 배열: TypeScript는 T[], Go는 []T, Python은 List[T] 또는 list[T], Java, Kotlin, C#은 List<T>, Swift는 [T], Rust는 Vec<T>.

• 중첩된 객체: 별도의 이름 붙은 타입이나 클래스. 동적 키가 많은 객체(ID 맵 등)는 감지해 수백 개의 필드 대신 map이나 Record로 타입을 지정합니다.

• null: TypeScript는 null, Go는 interface{}, Python은 None, C#은 object. 쓸모 있는 타입을 얻으려면 샘플에서 해당 필드에 실제 값을 넣으세요.

샘플에서 정확한 타입 얻기

추론은 샘플만큼만 정확합니다. 세 가지 습관이 큰 차이를 만듭니다. 첫째, 단일 객체 대신 여러 레코드를 배열로 붙여 넣어 선택 사항 필드와 혼합 타입이 드러나게 하세요. 둘째, 타입을 알고 있다면 null을 현실적인 값으로 바꾸세요. 모든 레코드에서 null인 필드는 아무 정보도 주지 않습니다. 셋째, 루트 타입 이름을 페이로드의 실제 의미대로 바꾸세요(Root가 아니라 InvoiceResponse). 중첩된 타입은 키 이름을 따르므로, 루트 이름이 의미 있을 때 코드베이스에서 훨씬 읽기 좋습니다.

API를 직접 관리한다면 장기적으로는 샘플이 아니라 스키마(OpenAPI 또는 JSON Schema)에서 타입을 생성하는 것이 더 낫습니다. 여기서 만드는 JSON Schema 출력은 그런 스키마를 작성하기 위한 괜찮은 출발점입니다.

관련 무료 도구

  • JSON 포매터 — JSON을 보기 좋게 정렬하고, 압축하고, 검증하세요. 파싱 오류는 줄과 열 위치까지 알려 줍니다. 브라우저에서 실행, 업로드 없음.
  • curl 코드 변환 — Chrome의 "cURL로 복사"를 포함한 curl 명령을 붙여 넣으면 같은 요청을 Python, JavaScript, Node, Go, PHP, Ruby, Java, C#, wget, HTTPie 코드로 만들어 줍니다.
  • YAML 검사기 — 오류마다 정확한 줄과 열을 알려 주는 YAML 검사로, 파서가 조용히 받아들이는 실수(yes/no 불리언, 탭, 중복 키)까지 잡아내세요.
  • JWT 디코더 — JWT의 헤더와 페이로드를 디코딩하고, 만료 시간을 알기 쉽게 확인하고, HS·RS·PS·ES 서명을 검증하거나 새 토큰에 서명하세요. 브라우저 밖으로 나가는 것은 없습니다.
  • SQL 포매터 — 지저분한 SQL을 PostgreSQL, MySQL, T-SQL, BigQuery 등에 맞춰 일관되게 들여쓴 읽기 쉬운 쿼리로 정리하세요. 브라우저에서 실행됩니다.