사용 방법
- 왼쪽 상자에 JSON을 붙여 넣거나 예시 불러오기를 누릅니다. 입력하는 동안 오른쪽에 코드가 나옵니다.
- 언어와 최상위 타입의 이름을 고릅니다. 타입만을 켜 두면 타입 정의만, 끄면 JSON을 읽고 쓰는 코드까지 나옵니다.
- 코드를 복사하거나 Root.ts, Root.go처럼 알맞은 확장자의 파일로 내려받습니다.
예시
{"id":1,"name":"Kit","tags":["a","b"]}, TypeScript→ export interface Root { id: number; name: string; tags: string[]; }실제 출력은 이름이 정렬된 여러 줄로 나옵니다.같은 JSON, Go
→ type Root struct { ID int64 `json:"id"`; Name string `json:"name"`; Tags []string `json:"tags"` }Go에는 필드 이름을 읽는 데 필요한 json 태그가 붙습니다.같은 JSON, Python
→ @dataclass class Root: id: int; name: str; tags: list[str]Pydantic을 켜면 데이터클래스 대신 Pydantic 모델이 나옵니다.
계산 방식
코드는 quicktype 웹사이트의 엔진인 오픈소스 quicktype 라이브러리가 만듭니다. 샘플을 읽어 발견한 객체 종류마다 타입 하나를 정하고, 목록 안의 객체들을 한 타입으로 합치고, 일부에만 없는 필드는 선택 속성으로 표시한 뒤, 고른 언어의 스타일로 타입을 씁니다. quicktype은 크기 때문에 변환을 시작할 때만 불러옵니다.
타입 이름은 키에서 옵니다. owner라는 키의 객체는 Owner라는 타입이 됩니다. 최상위 타입은 입력한 이름을 쓰되, 올바른 이름이 되도록 다듬습니다.
목록의 모든 언어에 대해 샘플이 코드를 만들어 내는지, 그리고 TypeScript, Go, Python, Rust, Kotlin, C#, Swift, Zod, JSON Schema 출력, 선택 속성, 최상위 목록, 옵션을 테스트합니다.
출처
자주 묻는 질문
- JSON을 TypeScript 인터페이스로 바꾸려면요?
- JSON을 붙여 넣고 TypeScript를 고른 채 결과를 복사하세요. 중첩된 객체는 각각 인터페이스가 되고, 목록은 배열이 되며, 목록의 일부 항목에 없는 필드는 선택 속성(?)이 됩니다.
- 필드가 null이나 any로 나오는 이유는요?
- 도구는 샘플에 보이는 것만 알 수 있습니다. 샘플에서 null인 필드는 타입을 알 수 없고, 빈 목록은 항목 타입을 알 수 없습니다. 그런 필드에 실제 값이 든 샘플을 쓰거나 타입을 직접 고치세요.
- 날짜가 Date 타입이 되나요?
- 날짜 감지를 켜지 않으면 안 됩니다. JSON에는 날짜 타입이 없어서 파싱하면 날짜도 문자열입니다. 변환하기 전에 Date로 적으면 틀리므로, 문자열은 기본으로 문자열로 둡니다.
- 타입만은 무슨 뜻인가요?
- 켜면 타입 정의만 나옵니다. 끄면 JSON 텍스트와 타입 사이를 변환하는 도우미 코드까지 나오는데, 더 길고 일부 언어에서는 라이브러리가 필요합니다.
- 어떤 언어를 지원하나요?
- TypeScript, Zod 스키마를 쓰는 TypeScript, Python, Go, Java, Kotlin, Swift, C#, Rust, Dart, PHP, Ruby, C++, Objective-C, Scala 3, Elm, Haskell, JSON Schema입니다.
- JSON이 어딘가로 전송되나요?
- 아니요. 코드는 브라우저에서 만들어집니다. 변환 라이브러리가 커서 처음 변환할 때 불러옵니다.
관련 도구
버전 기록
- 1.0.1 — 검색 제목에서 도구의 핵심 작업과 무료·온라인 사용 여부를 더 분명하게 안내합니다.
- 1.0.0 — 첫 공개.