선택과 선언을 일치시키기
기본 드래프트는 2020-12입니다. $schema 선언과 선택이 다르면 실패합니다. Draft-07의 튜플은 items 배열을, 2020-12는 prefixItems를 사용하므로 선택만 바꾸어 기존 규칙을 이전할 수는 없습니다.
스키마와 실제 데이터 검사
예제로 시작할 수 있습니다. 스키마만 검사는 데이터 없이 실행하고, 데이터 검증은 두 문서를 함께 확인합니다.
입력과 참조는 이 브라우저에서 처리하며 검증 데이터를 전송하거나 원격 참조를 가져오지 않습니다.
수동 검증을 실행할 수 있습니다.
JSON 스키마 검증기는 정수가 필요한 곳의 문자열, 누락된 필수 키, 허용하지 않은 속성을 찾아냅니다. JSON 문법이 맞아도 API 계약에는 어긋날 수 있습니다. 응답과 규칙을 나란히 두면 어느 쪽을 수정할지 판단하기 쉽습니다.
JSON Schema 검사기에서 키가 없는 경우와 값이 null인 경우는 다릅니다. default를 적어도 데이터가 추가되지는 않으며, 검사 과정은 원본을 고치지 않습니다.
JSON 스키마 검증기 보고서는 데이터 위치와 스키마 위치를 함께 제공합니다. /users/0/age의 타입 오류는 해당 값을 가리키지만 required 오류는 부모 객체를 가리킬 수 있습니다. 이때 매개변수에서 빠진 키를 확인하세요.
여러 정의를 루트에 매번 복사하지 않아도 됩니다. 가져온 참조 파일은 절대 $id로 등록하고 상대 참조는 기준 URI로 해석합니다. 파일명은 화면 표시용이며 참조 대상을 추측하는 데 쓰지 않습니다.
기본 드래프트는 2020-12입니다. $schema 선언과 선택이 다르면 실패합니다. Draft-07의 튜플은 items 배열을, 2020-12는 prefixItems를 사용하므로 선택만 바꾸어 기존 규칙을 이전할 수는 없습니다.
스키마만 검사는 루트와 가져온 모든 참조를 파싱하고 메타스키마 검사와 컴파일을 수행합니다. 데이터 입력은 읽지 않습니다. 참조마다 # 없는 고유한 절대 $id가 필요하며 누락된 참조는 오류가 됩니다.
Ctrl/Cmd+Enter로 수동 실행합니다. 입력, 옵션, 참조가 바뀌면 이전 작업이 취소되고 내보내기가 잠깁니다. 예제 교체, 초기화, 참조 삭제는 미리보기 후 적용하며 한 번 되돌리면 이전 입력과 보고서가 복구됩니다.
JSON 스키마 검증기는 Ajv로 draft-07, 2019-09, 2020-12를 처리합니다. 조건과 조합 규칙은 선택한 버전을 따릅니다. 알 수 없는 키워드는 컴파일 오류로 처리하여 조건이 누락된 채 통과하는 일을 막습니다.
JSON 유효성 검사에서 format은 기본적으로 꺼져 있습니다. 켜면 ajv-formats의 email, date-time, URI, UUID 등을 검사하며 알 수 없는 형식은 거부합니다. 별도 규칙인 pattern은 이 옵션과 관계없이 평가합니다.
JSON Schema 검증기는 문법 오류, 메타스키마 오류, 참조 해석 실패와 실제 데이터 위반을 구분합니다. 완료된 보고서만 복사할 수 있습니다. 화면 안내는 한국어이며 엔진의 기술 설명은 영어 원문으로 보존합니다.
가능한 곳에서 일찍 검사를 종료하지만 조합 분기는 여러 오류를 낼 수 있습니다. instancePath, schemaPath, keyword와 매개변수를 함께 보세요. 목록은 50개씩 표시하고 JSON 다운로드에는 허용된 전체 보고서가 들어갑니다.
네. Ajv는 enum을 문자열에만 한정하지 않습니다. 정수 99는 enum: [1,2,3]에 없으므로 실패하며 불리언도 지정된 값과 비교합니다. type 규칙과 enum 규칙은 별개로 적용됩니다.
네. minItems와 maxItems는 배열의 최소·최대 길이를 검사하고 uniqueItems는 중복을 제한합니다. 단, 실제 데이터가 배열이어야 하므로 다른 타입도 거부하려면 type: array를 함께 지정하세요.
지원합니다. anyOf는 하나 이상, oneOf는 정확히 하나의 분기를 만족해야 합니다. allOf는 모든 분기를 요구합니다. oneOf의 조건이 겹치면 두 분기를 만족해도 실패할 수 있습니다.
형식 검사 옵션을 켰을 때 지원되는 ajv-formats 검사를 수행합니다. 기본값에서는 format을 주석처럼 취급합니다. 알 수 없는 형식은 켠 상태에서 컴파일 오류가 되며 pattern에는 영향이 없습니다.
빈 문자열은 루트 값을 뜻합니다. 화면에는 읽기 쉬운 루트 표시를 쓰지만 JSON 보고서에는 빈 문자열을 유지합니다. 슬래시 하나는 빈 이름의 키를 뜻하므로 루트와 바꾸어 해석하면 안 됩니다.
함께 확인할 스키마 사례가 있나요?
JSON 스키마 검증기에서 통과와 실패 예제를 비교하세요. 보고서와 함께 드래프트 및 format 설정을 기록하면 환경별 결과 차이를 추적하기 쉽습니다.