JSON Schema 생성기
브라우저에서 JSON 샘플로 draft JSON Schema를 생성하세요 - 계정·업로드·CLI 없음.
JSON Schema 생성기 정보
브라우저에서 JSON 샘플로 draft JSON Schema를 생성하세요 - 계정·업로드·CLI 없음. API 응답 또는(더 좋음) 레코드 배열을 붙여 넣으세요. 중첩 객체는 중첩 스키마, 배열은 첫 요소만이 아니라 모든 요소로 타입을 정하고, 동일한 누락 키 패턴은 optional(required에서 제외)이 됩니다. JSON null은 optional로 접히지 않고 nullable 타입이 됩니다. email, uri, uuid, date, date-time처럼 보이면 string format을 추론합니다. Draft-07 또는 2020-12를 고른 뒤 스키마를 복사·다운로드하세요. 같은 샘플의 인터페이스는 JSON to TypeScript 변환기, minify된 payload는 JSON 미니파이어와 함께 사용하세요.
JSON Schema 생성기 사용 방법
- JSON 붙여 넣기(레코드 배열이 단일 객체보다 optional 키 추론에 유리). optional vs nullable을 먼저 보려면 샘플 로드.
- 스키마 title 설정, Draft-07(기본) 또는 2020-12 선택. 객체가 additional properties를 거부할지 허용할지 선택.
- 추론 리포트 확인: 속성 수, required·optional 키, format 힌트. 경고는 빈 배열·빈 객체·전부 null·혼합 union을 표시.
- JSON Schema 복사 또는 .schema.json 다운로드. AJV, Zod(변환기 경유), OpenAPI draft, CI validator에 사용.
- 서버로 전송되지 않음. 잘못된 JSON은 줄·열을 보고.
JSON Schema 생성기 예시
레코드 배열에서 optional 키
[{"sku":"A1","qty":2},{"sku":"B7","qty":1,"gift":true}]는 items가 sku·qty를 require하고 gift는 optional(not in required)인 배열 스키마가 됩니다.
Nullable vs optional
한 행에서 email이 없고 다른 행에서 note가 null이면 email은 optional string, note는 type ["string","null"]. 누락 키와 JSON null은 구분됩니다.
문자열 format 힌트
email, https URL, UUID, ISO date/date-time처럼 보이면 format: email, uri, uuid, date, date-time이 붙어 validator가 강제할 수 있습니다.
빈 컨테이너
{"items":[],"meta":{}}는 items를 빈 items 스키마 배열, meta를 속성 없는 객체로 둡니다. 더 풍부한 샘플을 붙이라는 경고가 나옵니다.
Draft-07 vs 2020-12
두 draft는 같은 추론 형태. Draft-07은 대부분 도구가 기대하는 $schema URI. 스택이 2020-12를 문서화하면 전환.
일반적인 사용 사례
- OpenAPI / AsyncAPI spec 전 JSON Schema 초안
- AJV로 CI에서 webhook payload(Stripe, GitHub, Slack) 검증
- 픽스처 파일을 contract test 계약으로 변환
- config·feature-flag payload 스키마 부트스트랩
- 같은 샘플 JSON에서 TypeScript interface와 병행
JSON Schema 생성기에 대한 자주 묻는 질문
- 샘플 JSON에서 JSON Schema는 어떻게 생성하나요?
- JSON 샘플 붙여 넣기, title 설정, draft 선택, 생성 스키마 복사. 생성은 브라우저에서. 중첩 객체·배열을 전부 순회하고 배열 항목에서 누락된 키는 required에서 제외합니다.
- optional과 nullable 차이는?
- optional은 일부 배열 항목에 키가 없어 required에 없음. nullable은 키가 있고 값이 JSON null이라 type에 null 포함(예: type: ["string","null"]). 샘플이 둘 다 보여 주지 않으면 접히지 않습니다.
- 어떤 JSON Schema draft를 써야 하나요?
- Draft-07이 validator·에디터에서 가장 널리 지원. 도구가 2020-12 $schema URI를 명시하면 2020-12. 추론 속성은 동일합니다.
- items나 properties가 비는 이유는?
- 빈 배열은 검사할 요소가 없어 items가 {}. 빈 객체는 properties가 비어 있음. 채워진 예를 붙여 넣으세요.
- string format은 항상 맞나요?
- 샘플 값 휴리스틱(email, uri, uuid, date, date-time). 프로덕션 계약 전 검토 - 샘플에서 email처럼 보여도 항상 email은 아닐 수 있습니다.
- JSON이 업로드되나요?
- 아니요. 스키마 생성은 이 탭에서만. 샘플은 브라우저를 떠나지 않습니다.
- JSON to TypeScript 변환기와 무엇이 다른가요?
- 둘 다 같은 종류의 샘플을 순회. 이 페이지는 validator·OpenAPI draft용 JSON Schema. TypeScript 변환기는 application code용 interface/type. 계약과 typed client가 모두 필요하면 같은 payload에서 둘 다 사용.
- additionalProperties: false가 unknown 키를 거부하나요?
- Reject extras를 켠 두면 예 - 엄격 API 계약에 유용. 샘플에 없는 필드를 클라이언트가 보낼 수 있으면 Allow extras로 전환.
관련 도구
JSON to TypeScript 인터페이스 변환기
무료 JSON to TypeScript interface 변환. JSON 샘플 붙여 nested interface/type alias 생성, optional과 JSON null 분리. 업로드 없음.
JSON Minifier & Formatter
무료 온라인 JSON minifier·formatter. JSON minify로 payload 축소 또는 2칸 들여쓰기 beautify(pretty-print). 입력 검증 - 업로드 불필요.
JSONPath 테스터
브라우저에서 JSONPath 온라인 테스트. 필드 추출, 필터 예제, 정규화 경로 복사 - 업로드 없음.
JSON Diff 검사기
브라우저에서 무료 구조적 JSON diff. 두 JSON을 키·값 기준으로 비교 - 줄 순서 무관. 업로드 없음.