JSON to Zod 스키마 생성기
JSON 객체를 타입이 추론된 Zod 검증 스키마로 브라우저에서 변환합니다.
사용법
- 입력 상자에 JSON을 붙여넣거나 입력합니다.
- 필요하면 내보낼 스키마 상수 이름을 변경합니다(기본값 schema).
- 출력 상자에서 생성된 Zod 스키마를 복사합니다.
자세한 설명
펼치기접기
JSON 객체나 배열을 붙여넣으면 중첩 객체까지 인라인으로 펼친 Zod 스키마를 바로 얻을 수 있습니다. TypeScript에서 API 응답이나 폼 데이터를 검증하고, 타입을 두 번 쓰는 대신 스키마에서 추론할 수 있습니다. 문자열·숫자·불리언은 그대로 매핑되고, 배열은 첫 원소로 타입을 정하며, 빈 배열은 unknown의 배열이 됩니다. 그다음 판단이 필요한 곳이 두 군데 있습니다. JSON null은 z.null()로 생성되는데 이는 null만 허용합니다. 대개 원하는 것은 실제 타입에 .nullable()을 붙인 형태입니다. 그리고 모든 키가 필수로 생성됩니다. 표본으로는 서버가 어떤 필드를 생략할 수 있는지 알 수 없기 때문이니, 해당하는 자리에 .optional()을 추가하세요. 모든 처리는 브라우저에서 이루어지며 JSON은 업로드되지 않습니다.
자주 묻는 질문
타입은 어떻게 추론되나요?
문자열은 z.string(), 숫자는 z.number(), 불리언은 z.boolean(), 객체는 z.object(), 배열은 첫 번째 요소 타입의 z.array()로 변환됩니다.
null이나 빈 배열은 어떻게 처리되나요?
null은 z.null()로, 빈 배열은 요소 타입을 추론할 수 없으므로 z.array(z.unknown())로 변환됩니다.
중첩 객체를 지원하나요?
예. 중첩 객체는 중첩된 z.object(...) 호출로 인라인되어, 전체 스키마가 하나의 상수에 할당할 수 있는 단일 표현식이 됩니다.
제 JSON이 어딘가로 전송되나요?
아니요. 변환은 전적으로 브라우저에서 이루어지며 아무것도 업로드되지 않습니다.
널 허용 필드에 z.null()을 정말 그대로 둬야 하나요?
거의 그렇지 않습니다. z.null()은 null만 받아들이고 실제 값은 거부하므로, 언제나 null인 필드에만 맞습니다. 대개 원하는 것은 실제 타입에 .nullable()을 붙인 형태이고, 키가 아예 없을 수도 있다면 .nullish()입니다.
여기서 TypeScript 타입을 얻을 수 있나요?
가능하며, 직접 쓴 인터페이스 대신 Zod를 쓰는 이유가 바로 그것입니다. z.infer<typeof schema>가 스키마에서 타입을 끌어내므로 검증과 타입이 서로 어긋날 수 없습니다. 스키마를 한 번만 쓰고 타입은 거기서 따라오게 하세요.
관련 도구
JSON → TypeScript 인터페이스
JSON 샘플에서 TypeScript 인터페이스를 자동 생성 — 키 이름을 따라 재귀적으로 타입 추론.
개발
JSON 스키마 검사기
JSON 문서를 JSON 스키마로 브라우저에서 검사합니다. 오류마다 JSON 포인터, 문서에서의 줄 번호, 실패한 키워드를 보여줍니다.
개발
JSON to GraphQL 스키마(SDL) 변환기
JSON 객체를 스칼라 매핑이 적용된 GraphQL 타입 정의(SDL)로 브라우저에서 변환합니다.
개발
JSON to Mongoose 스키마 생성기
JSON 객체를 타입이 매핑된 경로가 포함된 Mongoose 스키마로 브라우저에서 변환합니다.
개발
JSON to Protobuf 스키마 변환기 (proto3)
JSON 객체를 타입 지정 필드와 중첩 메시지를 갖춘 proto3 .proto 스키마로 브라우저에서 변환합니다.
개발
JSON Schema 생성기
JSON 붙여넣으면 그 형태에 맞는 draft-07 JSON Schema 생성 — 타입 추론·포맷 감지·required 필드 채움.
개발