개발자 / 유형
JSON to Zod 스키마 변환기
JSON 샘플에서 중첩 객체, 배열, 선택적 및 null 허용 필드, 정수를 지원하는 Zod 스키마와 TypeScript 타입을 생성합니다.
JSON to Zod 스키마 변환기: 샘플의 각 객체는 z.object 스키마가 되며, 해당 스키마에서 추론한 타입과 함께 내보냅니다. 중첩 객체에는 고유한 이름의 스키마가 생성됩니다. 배열의 객체는 병합됩니다. 일부 객체에 없는 키에는 .optional()이 추가되고, 때때로 null인 키에는 .nullable()이 추가되며, 정수에는 .int()가 추가됩니다. 생성된 스키마는 자체 샘플을 Zod로 파싱하여 검증했습니다. 서버에 파일을 전혀 업로드하지 않고 브라우저에서 100% 로컬로 실행됩니다.
- 카테고리
- 개발자 도구
- 실행 횟수
- 브라우저에서
- 비용
- 무료 · 가입 불필요
- 사용 가능 여부
- 사용 가능
브라우저에서 전부 실행됩니다
TypeScript
import { z } from "zod";
export const AddressSchema = z.object({
city: z.string(),
zip_code: z.string(),
});
export type Address = z.infer<typeof AddressSchema>;
export const UserSchema = z.object({
id: z.number().int(),
user_name: z.string(),
avatar_url: z.string(),
score: z.number(),
tags: z.array(z.string()),
address: AddressSchema,
manager_id: z.number().int().nullable(),
nickname: z.string().optional(),
});
export type User = z.infer<typeof UserSchema>;
export const UserListSchema = z.array(UserSchema);
각 객체에 스키마와 추론된 타입이 지정됩니다. 일부 객체에 없는 키에는 .optional(), 때때로 null인 키에는 .nullable(), 정수에는 .int()가 지정됩니다. API에서 보장하지 않는 규칙은 완화하십시오.
스키마 사용하기
Schema.parse(data)를 호출하면 데이터를 검증하고 잘못된 데이터에서 오류를 발생시킵니다. 또는 Schema.safeParse(data)를 사용하면 try와 catch 없이 확인할 수 있는 결과를 얻습니다. z.infer에서 내보낸 타입은 스키마를 편집할 때 스키마와 함께 최신 상태로 유지됩니다.
컴파일 시 타입만 필요하다면 JSON to TypeScript에서 일반 인터페이스를 얻을 수 있습니다. 기존 JSON Schema에 맞춰 검증하려면 JSON Schema 검증 도구를 사용하십시오.
생성된 규칙 강화하기
샘플에는 실제로 포함된 내용만 표시되므로 스키마를 시작점으로 활용하십시오. 해당하는 문자열에 .email(), .url() 또는 .datetime()을 추가하고, 값이 정해진 필드에는 z.enum([...])을, 데이터에 제한이 있는 곳에는 .min() 또는 .max()를 추가하십시오.
사용 방법
- JSON 샘플을 붙여넣습니다. 일반적인 레코드가 여러 개 포함된 배열이 이상적입니다.
- 최상위 타입의 이름을 지정합니다.
- 생성된 스키마를 복사하여 런타임 데이터 검증에 사용합니다.
개인정보 보호 및 제한사항
JSON은 브라우저에서 변환되며 업로드하지 않습니다.
관련 도구
자주 묻는 질문
TypeScript 인터페이스 대신 Zod를 사용하는 이유는 무엇인가요?
인터페이스는 코드를 컴파일할 때 사라지므로 런타임에 데이터를 검사할 수 없습니다. Zod 스키마는 데이터를 검사하고 z.infer를 사용하여 동일한 타입을 제공합니다.
정말 정수에 .int()를 사용해야 하나요?
API가 정수만 제공한다고 보장하는 경우에만 사용하십시오. 가격이나 점수에 소수 부분이 포함될 수 있다면 샘플에 정수만 있더라도 .int()를 제거하십시오.
날짜나 이메일 같은 문자열을 처리하나요?
이러한 값은 z.string()으로 입력됩니다. 데이터에 필요한 경우 .email(), .url() 또는 날짜 검사와 같은 refinement를 추가하십시오.
무료 도구 · 브라우저에서회 실행 · 계정 불필요