UTILS.
100% 브라우저 내 실행
🛡️

JSON을 Zod 스키마로 변환

샘플 JSON 값을 붙여넣어 Zod 스키마와 추론된 TypeScript 타입을 생성합니다. 하나의 형태로 런타임 검증과 컴파일 타임 타입을 모두 얻으세요.

출력

이 도구에 대하여

JSON을 Zod 스키마로 변환 도구는 붙여넣은 JSON 샘플을 바로 사용할 수 있는 Zod 스키마와 그에 맞는 TypeScript 타입으로 바꿔줍니다. Zod는 가장 널리 쓰이는 TypeScript 검증 라이브러리이며, 실제 API 페이로드에 대해 z.object 트리를 직접 손으로 작성하는 것은 느리고 실수하기 쉽습니다. 이 변환기는 JSON.parse로 JSON을 파싱하고 값을 재귀적으로 순회하며 관용적인 Zod를 출력합니다. 문자열은 z.string(), 정수는 z.number().int(), 그 외 숫자는 z.number(), 불리언은 z.boolean(), null은 z.null(), 중첩 객체는 각자 이름이 붙은 z.object({...}) 스키마가 됩니다.

모든 처리는 브라우저에서 로컬로 실행됩니다. JSON은 페이지 내에서 파싱되며 업로드되지 않으므로 민감한 페이로드가 기기에 그대로 남습니다. 배열은 모든 요소를 깊게 병합하여 요소 타입을 추론하므로, 키가 조금씩 다른 객체들의 배열은 일부 요소에서 빠진 키가 .optional()로 표시된 하나의 스키마를 만듭니다. ISO-8601 날짜-시간 문자열은 인식되어 z.string().datetime()으로 출력됩니다. 유효한 식별자가 아닌 객체 키는 안전하게 따옴표로 감싸집니다.

출력은 완전한 모듈입니다. 각 객체 스키마에 대한 export const(자식이 이를 참조하는 부모보다 먼저 정의됨)에 이어 export type Root = z.infer<typeof Root>가 나오므로 컴파일 타임 타입을 무료로 얻습니다. 루트 이름 상자로 최상위 스키마 이름을 바꾸고, 누락 키 토글로 없는 키를 .optional()(기본값) 또는 .nullable()로 처리하세요. 결과를 복사하거나 .ts 파일로 다운로드할 수 있습니다.

자주 묻는 질문

JSON 타입은 Zod로 어떻게 매핑되나요?
문자열은 z.string(), ISO 날짜-시간 문자열은 z.string().datetime(), 정수는 z.number().int(), 그 외 숫자는 z.number(), 불리언은 z.boolean(), null은 z.null(), 배열은 z.array(...), 객체는 이름이 붙은 z.object({...})가 됩니다. 빈 배열은 z.array(z.unknown())이 됩니다.
선택적 또는 nullable 필드는 어떻게 처리되나요?
배열의 요소나 병합된 형제 항목에 키가 없으면 그 키는 .optional()로 표시됩니다. null로 관찰된 값은 z.null()이 되거나 .nullable()을 추가합니다. 누락 키 토글로 일부 샘플에 없는 키에 대해 .optional()(기본값) 또는 .nullable()을 출력할 수 있습니다.
TypeScript 타입도 함께 제공되나요?
네. 스키마 다음에 export type Root = z.infer<typeof Root>를 출력하므로 추론된 정적 타입이 스키마 자체에서 파생됩니다. 런타임 검증과 컴파일 타임 타입 모두에 대한 단일 진실 공급원입니다.
제 JSON이 어딘가로 업로드되나요?
아니요. 파싱과 코드 생성은 JSON.parse와 순수 JavaScript로 브라우저에서 전부 이루어집니다. 서버로 아무것도 전송되지 않으므로 비공개 API 응답을 안전하게 붙여넣을 수 있습니다.

더 많은 도구