JSON 스키마 검증기
검증 결과draft-07
검증 통과
passed · draft-07
관련 추천
주요 기능
- Draft-07 표준 검증: 타입, 필수 필드, 속성, 정규식, 포맷, enum 등 포괄적 기본 규칙 검증
- 강력한 조합 로직: allOf, anyOf, oneOf, not 지원, 복잡한 중첩 구조 및 다중 제약 조건 검증
- 정확한 오류 위치: 상세한 오류 경로와 시맨틱 오류 메시지로 API 계약 충돌 및 데이터 구조 이상치 빠른 탐색
- API 계약 테스트: 프론트엔드-백엔드 인터페이스 디버깅 및 자동 계약 테스트에 적합, 실제 응답이 스키마와 엄격히 일치 보장
- 로컬 고속 처리: 순수 브라우저 사이드 계산, 서버 업로드 불필요, 민감 데이터 구조 및 테스트 데이터 프라이버시 보장
자주 묻는 질문
JSON Schema로 API 응답 데이터를 검증하려면?
왼쪽에 JSON Schema 정의를, 오른쪽에 실제 API 응답 JSON을 붙여넣으세요. 자동으로 두 구조를 비교하여 데이터 타입, 필수 필드, 정규식 패턴 등을 정확히 검증합니다. API 계약 테스트와 프론트엔드-백엔드 데이터 구조 일관성 보장에 필수적입니다.
어떤 JSON Schema 표준과 검증 규칙을 지원하나요?
JSON Schema Draft-07 표준을 완전히 따릅니다. 타입 검사, 필수 필드, 속성 정의, 정규식 패턴 매칭, 포맷 검증, enum 값 및 allOf/anyOf/oneOf/not 조합 로직 검증을 지원합니다.
검증 실패 시 오류를 빠르게 찾을 수 있나요?
네. 실패한 JSON 경로, 특정 오류 타입(타입 불일치, 필수 필드 누락 등) 및 해당 스키마 규칙을 정확히 지적하는 상세한 오류 리포트를 생성합니다. 디버깅 효율이 크게 향상됩니다.
자동 데이터 거버넌스에 JSON Schema를 어떻게 활용하나요?
ETL 데이터 클렌징이나 데이터 수집 전 미리 정의된 스키마 규격 준수 여부를 확인할 수 있습니다. 더티 데이터와 이상치를 효과적으로 차단해 데이터 품질을 보장합니다.
온라인 JSON Schema 검증이 데이터를 노출시키나요?
아니요. 모든 처리는 브라우저에서 완전히 로컬로 수행됩니다. 기업 핵심 API 데이터 구조든 개인 비즈니스 데이터든 서버에 업로드되지 않으며 엔터프라이즈급 개인정보 보호를 보장합니다.
JSON Schema 키워드 속참표
다음 표는 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 버전별 차이 비교
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 |
- JSON 압축
- CSV 를 JSON으로
- JSON을 CSV로
- JSON Diff
- JSON Escape / Unescape
- JSON 평탄화
- JSON 포맷터
- JSON 생성기
- JSONPath 온라인 쿼리
- JSON 병합
- JSON 복구
- JSON 스키마 검증기
- JSON 정렬
- JSON Stringify
- JSON을 HTML로 변환
- JSON을 Java로
- JSON을 Markdown으로
- JSON을 SQL로 변환
- JSON을 TOML로 변환
- JSON을 TypeScript로 변환
- XML을 JSON으로
- JSON을 XML로 변환
- YAML을 JSON으로 변환
- JSON → YAML 변환
- JSON을 Go로
- JSON을 Rust로
- JSON → Swift
- JSON에서 C#로
- JSON을 C++로
- JSON을 PHP로
- JSON을 Python으로