JSON → 코드 변환기

JSON 샘플을 TypeScript 인터페이스, Go 구조체, Rust serde 구조체, Zod 스키마, JSON Schema로 변환합니다.

도구를 불러오는 중…

JSON → 코드 변환기대표적인 JSON 샘플을 붙여넣으면 대상 언어의 타입이 지정된 코드를 즉시 얻을 수 있습니다: TypeScript 인터페이스, json 태그가 붙은 Go 구조체, Rust serde 구조체, Zod 스키마, 또는 draft-07 JSON Schema. 타입은 데이터에서 직접 추론됩니다. 중첩된 객체는 이름이 붙은 타입이 되고, 배열은 요소 타입을 추론하며, 모든 배열 항목에 존재하지 않는 필드는 옵셔널로 표시됩니다. 모든 처리가 브라우저 안에서 이뤄지므로 JSON이 업로드되지 않습니다.

JSON → 코드 변환기란?

JSON → 코드는 전적으로 브라우저 안에서 동작하는 무료 타입 생성기로, JSON 샘플을 읽어 선택한 언어로 대응하는 데이터 모델을 작성해 줍니다. 변환 대상 메뉴에서 TypeScript 인터페이스, Go 구조체, Rust serde 구조체, Zod 스키마, JSON Schema 중 하나를 고르고, 루트 타입 이름으로 최상위 타입의 이름을 지정합니다. 추론 엔진은 JSON을 따라가며 문자열·숫자·불리언·null을 네이티브 타입으로 매핑하고, 중첩된 객체는 각자 이름이 붙은 타입으로 끌어올리며, 배열은 요소 타입을 채택하고, 일부 배열 요소에서 빠진 키는 옵셔널이 됩니다. 프런트엔드와 백엔드 개발자가 API 응답에서 DTO를 만들거나, 검증 스키마 초안을 잡거나, 보일러플레이트를 손으로 쓰지 않고 클라이언트와 서버의 타입을 맞추는 데 사용합니다.

JSON → 코드 변환기 사용법

  1. 입력 상자에 대표적인 JSON 샘플을 붙여넣거나 입력하고, 예시를 불러오려면 샘플을 클릭합니다.
  2. 설정을 열고 변환 대상에서 대상을 고릅니다: TypeScript, Go, Rust, Zod 또는 JSON Schema.
  3. 루트 타입 이름을 설정해 최상위 인터페이스·구조체·스키마의 이름을 정합니다.
  4. 출력 패널에서 생성된 코드를 확인합니다. JSON을 편집하거나 옵션을 바꾸면 자동으로 갱신됩니다.
  5. 타입 통계로 추론된 이름 있는 타입의 개수를 확인한 다음, 복사를 클릭해 결과를 가져옵니다.

예시

객체를 TypeScript 인터페이스로

입력

{ "id": 1, "name": "Ada", "active": true }

출력

export interface Root {
  id: number;
  name: string;
  active: boolean;
}

중첩 객체를 Go 구조체로

입력

{ "user": { "age": 30 } }

출력

type User struct {
	Age float64 `json:"age"`
}

type Root struct {
	User User `json:"user"`
}

키가 빠진 배열을 Zod 스키마로

[{"a":1,"b":2},{"a":3}] 같은 배열을 붙여넣고 변환 대상을 Zod로 바꿉니다. 두 번째 요소에 b가 없으므로 생성기는 추론된 z.object에서 b를 .optional()로 표시하고, 그 덕분에 스키마가 두 형태를 모두 받아들입니다.

자주 묻는 질문

제 JSON이 어딘가로 업로드되나요?
아니요. 파싱과 코드 생성이 내장된 추론 엔진을 사용해 모두 브라우저 안에서 실행됩니다. JSON이 기기를 벗어나지 않으며 오프라인에서도 계속 작동합니다.
어떤 대상을 지원하나요?
TypeScript 인터페이스, Go 구조체(json 태그와 옵셔널 필드용 omitempty 포함), Rust serde 구조체(Serialize/Deserialize derive 포함, 필드 이름이 바뀌면 rename), Zod 스키마, draft-07 JSON Schema를 지원합니다. 이 도구는 샘플에서 정직하게 추론할 수 있는 것만 생성합니다.
옵셔널 필드는 어떻게 결정되나요?
샘플로부터 결정됩니다. 배열이 객체를 담고 있고 일부 객체에서 어떤 키가 빠져 있으면 그 키는 옵셔널로 추론됩니다. 그 외에는 샘플에 존재하는 모든 키가 필수로 처리됩니다.
숫자, null, 혼합 타입은 어떻게 처리되나요?
숫자는 언어의 부동소수점 타입(number, float64, f64)으로 매핑되고, null은 대상별로 nullable이나 값 타입으로 매핑됩니다. 샘플마다 서로 다른 타입을 갖는 필드는 추측하지 않고 너그러운 타입(unknown, interface{}, serde_json::Value)으로 물러납니다.
왜 출력이 비어 있거나 오류가 표시되나요?
입력은 유효한 JSON이어야 합니다. 파싱에 실패하면 가능한 경우 줄과 열과 함께 오류를 보여 줍니다. 짚어 준 지점을 고치면 코드가 즉시 다시 생성됩니다.

관련 도구