JSON 스키마 검증기
검증 결과draft-07
검증 통과
passed · draft-07
왼쪽에 JSON Schema 정의를, 오른쪽에 실제 API 응답 JSON을 붙여넣으세요. 자동으로 두 구조를 비교하여 데이터 타입, 필수 필드, 정규식 패턴 등을 정확히 검증합니다. API 계약 테스트와 프론트엔드-백엔드 데이터 구조 일관성 보장에 필수적입니다.
JSON Schema Draft-07 표준을 완전히 따릅니다. 타입 검사, 필수 필드, 속성 정의, 정규식 패턴 매칭, 포맷 검증, enum 값 및 allOf/anyOf/oneOf/not 조합 로직 검증을 지원합니다.
네. 실패한 JSON 경로, 특정 오류 타입(타입 불일치, 필수 필드 누락 등) 및 해당 스키마 규칙을 정확히 지적하는 상세한 오류 리포트를 생성합니다. 디버깅 효율이 크게 향상됩니다.
ETL 데이터 클렌징이나 데이터 수집 전 미리 정의된 스키마 규격 준수 여부를 확인할 수 있습니다. 더티 데이터와 이상치를 효과적으로 차단해 데이터 품질을 보장합니다.
아니요. 모든 처리는 브라우저에서 완전히 로컬로 수행됩니다. 기업 핵심 API 데이터 구조든 개인 비즈니스 데이터든 서버에 업로드되지 않으며 엔터프라이즈급 개인정보 보호를 보장합니다.
다음 표는 JSON Schema 명세에서 가장 자주 사용되는 검증 키워드를 기능별로 분류하여 정리한 것으로 빠르게 참조할 수 있도록 합니다.
| 키워드 | 설명 |
|---|---|
| 기본 타입 | |
type | 데이터 타입 지정: string, number, integer, boolean, array, object, null. 단일 타입 또는 타입 배열 지원. |
| 객체 검증 | |
properties | 객체의 각 속성에 대한 하위 스키마를 정의합니다. |
required | 문자열 배열로, 어떤 속성이 필수인지 지정합니다. |
additionalProperties | properties에 정의되지 않은 추가 속성을 허용할지 여부를 제어합니다. false 또는 스키마로 설정할 수 있습니다. |
propertyNames | 속성 이름이 일치해야 하는 스키마를 제한합니다 (일반적으로 pattern 정규식 사용). |
minProperties | 객체가 포함해야 하는 최소 속성 수. |
maxProperties | 객체가 포함할 수 있는 최대 속성 수. |
| 열거형・상수 | |
enum | 열거값 배열로, 데이터는 배열의 값 중 하나여야 합니다. |
const | 상수 값으로, 데이터는 이 값과 정확히 일치해야 합니다. |
| 숫자 제약 | |
minimum | 숫자의 최소값 (경계 포함). |
maximum | 숫자의 최대값 (경계 포함). |
exclusiveMinimum | 숫자가 엄격하게 더 커야 함 (경계 미포함). |
exclusiveMaximum | 숫자가 엄격하게 더 작아야 함 (경계 미포함). |
multipleOf | 숫자는 지정된 수의 배수여야 합니다. |
| 문자열 제약 | |
minLength | 문자열의 최소 길이. |
maxLength | 문자열의 최대 길이. |
pattern | 정규식으로, 문자열은 이 패턴과 일치해야 합니다. |
format | 의미적 형식 검증: email, uri, date-time, uuid, ipv4, ipv6, hostname 등. |
| 배열 제약 | |
items | 배열 요소의 스키마를 정의합니다 (단일 스키마는 모든 요소에 적용). |
minItems | 배열의 최소 요소 수. |
maxItems | 배열의 최대 요소 수. |
uniqueItems | 배열 요소가 고유해야 하는지 여부. |
contains | 배열에 이 스키마와 일치하는 요소가 하나 이상 있어야 합니다. |
| 조합 로직 | |
allOf | 데이터가 모든 하위 스키마와 일치해야 함 (논리곱). |
anyOf | 데이터가 하나 이상의 하위 스키마와 일치하면 됨 (논리합). |
oneOf | 데이터가 정확히 하나의 하위 스키마와 일치해야 함 (배타적 논리합). |
not | 데이터가 이 스키마와 일치하지 않아야 함 (논리 부정). |
| 조건부 검증 | |
if | 조건 판단 스키마. 데이터가 if와 일치하면 then을 만족해야 하고, 그렇지 않으면 else를 만족해야 합니다. |
then | if 조건이 참일 때 만족해야 하는 스키마. |
else | if 조건이 거짓일 때 만족해야 하는 스키마. |
| 참조・재사용 | |
$ref | 다른 스키마 정의를 참조합니다. 로컬 참조(#/$defs/xxx) 및 원격 참조를 지원합니다. |
$defs | 재사용 가능한 하위 스키마를 정의합니다 (Draft 2019-09+, 구버전은 definitions 사용). |
definitions | Draft 4-7에서 재사용 가능한 하위 스키마를 정의하는 키워드. |
| 메타 정보 | |
title | 스키마의 제목 설명 (주석, 검증에 관여하지 않음). |
description | 스키마의 상세 설명 (주석, 검증에 관여하지 않음). |
default | 기본값 (주석, 검증에 관여하지 않음). |
examples | 예시 값 배열 (주석, 검증에 관여하지 않음). |
$schema | 사용할 JSON Schema 명세 버전을 지정합니다. |
| 의존 관계 | |
dependentRequired | 속성 의존성: 특정 속성이 존재할 때 다른 속성도 존재해야 함 (Draft 2019-09+). |
dependencies | Draft 4-7의 의존성 키워드로, 속성 의존과 스키마 의존 기능을 모두 가집니다. |
JSON Schema는 여러 Draft 버전을 거쳐 발전해왔습니다. Draft 7이 현재 가장 널리 사용되는 버전이며, Draft 2020-12가 최신 안정판입니다.
| 기능 | Draft 4 | Draft 6 | Draft 7 | 2019-09 | 2020-12 |
|---|---|---|---|---|---|
| type 타입 검증 | ✓ | ✓ | ✓ | ✓ | ✓ |
| required 필수 필드 | ✓ | ✓ | ✓ | ✓ | ✓ |
| enum/const 상수 | ✓ enum | ✓ | ✓ | ✓ | ✓ |
| minimum/maximum 숫자 범위 | ✓ | ✓ | ✓ | ✓ | ✓ |
| exclusiveMinimum/Maximum | 불리언 | 숫자 | 숫자 | 숫자 | 숫자 |
| multipleOf 배수 검증 | ✓ | ✓ | ✓ | ✓ | ✓ |
| minLength/maxLength | ✓ | ✓ | ✓ | ✓ | ✓ |
| pattern 정규식 매칭 | ✓ | ✓ | ✓ | ✓ | ✓ |
| format 형식 검증 | ✓ | ✓ | ✓ | 기본 주석 | 기본 주석 |
| items 배열 검증 | ✓ | ✓ | ✓ | ✓ | ✓ |
| contains 요소 포함 | ✗ | ✓ | ✓ | ✓ | ✓ |
| minItems/maxItems | ✓ | ✓ | ✓ | ✓ | ✓ |
| uniqueItems | ✓ | ✓ | ✓ | ✓ | ✓ |
| additionalProperties | ✓ | ✓ | ✓ | ✓ | ✓ |
| propertyNames | ✗ | ✓ | ✓ | ✓ | ✓ |
| allOf/anyOf/oneOf/not | ✓ | ✓ | ✓ | ✓ | ✓ |
| if/then/else 조건 | ✗ | ✗ | ✓ | ✓ | ✓ |
| $ref 참조 | ✓ | ✓ | ✓ | ✓ | ✓ |
| $defs 정의 재사용 | definitions | definitions | definitions | $defs | $defs |
| dependentRequired | ✗ | ✗ | ✗ | ✓ | ✓ |
| prefixItems 튜플 검증 | 배열 형식 | 배열 형식 | 배열 형식 | 배열 형식 | prefixItems |
| unevaluatedProperties | ✗ | ✗ | ✗ | ✓ | ✓ |
| $dynamicRef/$anchor | ✗ | ✗ | ✗ | ✓ $recursiveRef | ✓ dynamicRef |