onlinetools.dev

JSON Schema 검증기 & 생성기

JSON을 스키마와 대조 검증하거나 샘플 데이터에서 스키마 추론

로컬 실행
loading…
이 도구에 대해

같은 규율의 두 방향입니다. 샘플 JSON을 붙여넣어 거기서 추론된 draft-07 스키마를 얻거나, 데이터와 스키마를 붙여넣어 모든 위반을 JSON 경로와 함께 나열해 봅니다. 검증은 Ajv에서 실행됩니다 — 대부분의 Node 서비스가 쓰는 바로 그 엔진이라, 여기서 통과하면 CI에서도 통과합니다.

추론은 프로덕션을 염두에 둡니다. 객체 키는 타입이 지정된 properties와 required 항목이 되고, 배열은 모든 요소의 형태를 병합하며, 정수는 부동소수점과 구분되고, 일부 배열 요소에만 나타나는 키는 required에서 올바르게 제외됩니다. 결과는 format, 범위, 패턴으로 조여 나갈 시작점입니다.

API 응답과 설정 파일이야말로 서드파티 서버에 가장 두고 싶지 않은 데이터입니다. 추론과 검증 모두 전부 브라우저 안에서 실행됩니다.

자주 묻는 질문

어떤 JSON Schema draft를 지원하나요?
추론은 에디터와 검증기 전반에서 가장 널리 지원되는 draft-07을 내보냅니다. 검증은 draft-07과 Ajv가 비엄격 모드에서 이해하는 이전 draft들을 받아들이고, 2019-09/2020-12 키워드도 대부분 동작합니다. 알 수 없는 키워드는 치명적 오류가 되는 대신 무시되기 때문입니다.
위반 경로의 $는 무슨 뜻인가요?
JSONPath 스타일의 문서 루트입니다. $.age는 최상위 age 속성, $.items.2.name은 세 번째 배열 요소의 name입니다. 빈 경로($)는 위반이 문서 루트 자체에 대한 것이라는 뜻입니다 — 타입이 틀렸거나 필수 속성이 빠진 경우죠.
왜 추론된 스키마가 기대보다 엄격하거나 느슨한가요?
주어진 샘플을 정확히 그대로 기술하기 때문입니다. 어디에나 있는 필드는 required가 되고 관찰된 타입만 허용됩니다. 더 일반적인 스키마를 원하면 더 다양한 샘플(대표성 있는 객체들의 배열)을 넣고 손으로 조정하세요 — 추론은 의도를 알 수 없습니다.
검증이 format, pattern 같은 제약 키워드를 지원하나요?
구조 키워드(type, required, properties, items, enum, minimum, pattern…)는 전부 강제됩니다. "email"이나 "date-time" 같은 format 문자열은 단정되지 않습니다 — format이 기본적으로 주석(annotation)인 JSON Schema 명세를 그대로 따르는 것이고, 잘못된 확신을 피하게 해 줍니다.
관련 도구