JSON 스키마 검증기

스키마와 문서를 붙여넣고 draft를 선택하면, 검증기가 스키마가 사용하는 모든 키워드, type, required, enum, oneOf, $ref, if/then/else, 사용자 지정 format, 에 대해 문서를 검사하고, 각 위반을 정확한 위치를 가리키는 JSONPath 스타일 포인터와 함께 보고합니다.

스키마에 대해 검증하는 방법

  1. 1

    스키마 붙여넣기

    JSON 스키마 draft 04, 07 또는 2020-12. `$schema` 키워드(있으면)가 draft를 자동 선택합니다.

  2. 2

    문서 붙여넣기

    검증하려는 JSON. 먼저 유효한 JSON이어야 합니다. 구문 오류는 스키마 평가 전에 표시됩니다.

  3. 3

    검증

    각 위반은 JSON 포인터(`/user/email`)와 실패한 키워드(`format`, `required` 등)와 함께 보고됩니다.

  4. 4

    수정 후 재검증

    어느 쪽이든 편집하면 상태가 실시간으로 갱신됩니다.

지원 키워드

핵심: type, enum, const, multipleOf, maximum, minimum, exclusiveMaximum, exclusiveMinimum, maxLength, minLength, pattern, maxItems, minItems, uniqueItems, maxContains, minContains, maxProperties, minProperties, required, dependentRequired.

조합: allOf, anyOf, oneOf, not.

적용자: properties, patternProperties, additionalProperties, items, prefixItems, contains, propertyNames.

조건부: if, then, else, dependentSchemas.

참조: $ref, $defs, $id, $anchor.

형식(활성화 시 검증 포함): date-time, date, time, duration, email, hostname, ipv4, ipv6, uri, uuid, regex.

오류 출력

FAIL  /user/email        format            "not-an-email" is not a valid "email"
FAIL  /user/age          minimum           -3 is less than the minimum 0
FAIL  /orders/0/total    type              "42" is not of type "number"
FAIL  /                  required          missing required property "shippingAddress"

모든 오류에는 경로와 실패한 키워드가 포함되어 편집기에서 빠르게 찾을 수 있습니다.

발목을 잡는 draft 차이

키워드 Draft 04 Draft 07 Draft 2020-12
id$id id $id $id
exclusiveMaximum 불리언 숫자 숫자
items 배열 구문 items items prefixItems
$ref 형제 허용 아니요 아니요

올바른 draft를 설정하세요. draft-04 스키마를 2020-12로 검증하면 id와 다른 미묘한 부분을 잘못 해석합니다.

일반적인 워크플로

  • API 계약 테스트: 배포 전에 생성/갱신된 OpenAPI 스키마를 실제 샘플 응답에 대해 실행합니다.
  • 설정 강화: 병합 전 CI에서 모든 YAML/JSON 설정을 스키마에 대해 검증합니다.
  • 데이터 수집: 기대 형태에 맞지 않는 페이로드를 명확한 오류 메시지와 함께 일찍 거부합니다.

흔한 실수

  • format 강제 잊기. 기본적으로 대부분의 검증기는 알 수 없는 형식을 주석 전용으로 취급합니다. 잘못된 이메일과 날짜를 실제로 거부하려면 엄격 형식 검증을 활성화하세요.
  • oneOf 남용. oneOf의 두 분기가 겹치면 문서는 실패합니다(정확히 하나만 일치해야 함). anyOf나 디스크리미네이터 패턴을 사용하세요.
  • additionalProperties: false로 빡빡한 스키마. 새 선택적 필드 추가가 호환성 깨짐 변경이 됩니다. 진정으로 닫힌 객체를 원하지 않는 한 생략하세요.

자주 묻는 질문

네. Draft 2020-12, 07, 04를 모두 지원합니다. 검증기는 문서의 $schema 키워드를 읽어 올바른 것을 고르거나, UI의 선택기로 폴백합니다.

표준 형식(email, date-time, uuid, ipv4 등)은 엄격 형식이 활성화되면 검증됩니다. 스키마에 선언된 사용자 지정 형식은 pattern으로 정규식을 제공하지 않는 한 주석 전용으로 취급됩니다.

내부 참조(#/$defs/foo)는 자동으로 해석됩니다. 외부 HTTP 참조는 보안을 위해 기본적으로 가져오지 않습니다. 외부 참조를 먼저 인라인하거나, 원격 $ref 해석을 지원하는 전용 도구를 사용하세요.

네. 스키마와 문서 모두 로컬에 남습니다. 붙여넣은 내용은 절대 업로드되지 않아 내부 API 계약과 민감한 데이터에 안전합니다.

관련 도구

이 도구는 다른 언어로도 제공됩니다