기능
JSON Schema는 JSON 데이터의 구조를 설명하는 규격입니다. 객체에 있어야 할 속성, 각 값의 타입, 허용 범위와 패턴, 배열 길이 등을 정의합니다. API의 OpenAPI 명세, 설정 파일 자동 완성을 제공하는 편집기, 잘못된 요청을 거부하는 백엔드에서 널리 쓰입니다.
이 검사기는 JSON 문서를 스키마로 검사하고 찾은 문제를 모두 나열합니다. 각 오류에는 데이터 안의 위치(/tags/1 같은 JSON Pointer), 읽기 쉬운 메시지, 실패한 스키마 키워드가 표시되어 데이터나 스키마를 빠르게 고칠 수 있습니다. 2020-12, 2019-09, Draft-07, Draft-04를 지원하며 $ref, $defs, allOf/anyOf/oneOf, if/then/else, unevaluatedProperties, 형식 검사도 처리합니다.
사용 방법
- JSON 데이터에 데이터를, JSON Schema에 스키마를 붙여 넣거나 각각 파일을 업로드합니다. 예제를 누르면 일부러 몇 군데 틀린 사용자 레코드를 불러옵니다.
- 결과는 입력하는 대로 갱신됩니다. 데이터가 유효하면 초록색 배지가, 아니면 오류 개수와 목록이 표시됩니다.
- 드래프트를 자동으로 두면
$schema를 따르고, 버전을 직접 지정할 수도 있습니다. 모든 오류 표시를 끄면 첫 오류에서 멈춥니다. - 오류 복사는 목록을 일반 텍스트로 복사해 버그 리포트나 코드 리뷰에 붙여 넣을 수 있게 합니다.
어느 한쪽이 올바른 JSON이 아니면 데이터와 스키마 중 어느 쪽이 문제인지와 줄·열 번호를 알려 줍니다.
예시
다음 스키마로:
{
"type": "object",
"required": ["id"],
"properties": {
"id": { "type": "integer" },
"age": { "type": "integer", "minimum": 0 }
}
}
문서 {"age": -1}를 검사하면 오류가 두 개 나옵니다. (루트)에서 필수 속성 id가 없고, /age에서 값이 최솟값 0보다 작습니다.
팁
"additionalProperties": false를 추가하면 철자가 틀린 속성 이름을 잡아낼 수 있습니다. 그렇지 않으면 조용히 통과됩니다. 고정 값에는 enum이나 const를, 제품 코드 같은 문자열에는 pattern을 쓰세요. 스키마가 커지면 반복되는 부분을 $defs로 옮기고 $ref로 참조하세요.
자주 묻는 질문
› 어떤 JSON Schema 버전을 지원하나요?
2020-12, 2019-09, Draft-07(Draft-06 포함), Draft-04를 지원합니다. '드래프트'를 자동으로 두면 스키마의 $schema 키워드로 버전을 판단하고, $schema가 없으면 2020-12로 처리합니다.
› 오류의 경로는 무엇을 뜻하나요?
첫 번째 경로는 데이터에서 검사에 실패한 값을 가리키는 JSON Pointer입니다(예: /items/2/price). '(루트)'는 문서 전체를 뜻합니다. 회색 줄은 실패한 키워드와 스키마 안의 위치입니다(예: minimum · #/properties/age/minimum).
› email이나 date-time 같은 형식도 검사하나요?
네. date, time, date-time, duration, email, hostname, ipv4, ipv6, uri, uri-reference, uuid, regex, json-pointer 등 흔히 쓰는 형식을 검사합니다. 알 수 없는 형식은 사양대로 무시합니다.
› 스키마에서 다른 파일을 참조할 수 있나요?
같은 스키마 안의 참조(예: #/$defs/address를 가리키는 $ref)는 동작합니다. 데이터가 브라우저 밖으로 나가지 않으므로 외부 URL은 내려받지 않습니다. 참조하는 정의는 $defs에 붙여 넣으세요.