JSON Schema 유효성 검사기
JSON 데이터를 JSON Schema에 대해 온라인으로 검사. Draft-07 및 Draft 2020-12 지원. 오류 경로(예: $.items[0].name)와 상세 메시지 표시. 무료, 100% 클라이언트사이드.
사용 방법
- 왼쪽에 JSON Schema를, 오른쪽에 JSON 데이터를 붙여넣습니다.
- 드롭다운에서 스키마 초안(Draft-07 또는 Draft 2020-12)을 선택합니다.
- Validate 버튼을 클릭합니다 (Ctrl+Enter 단축키 사용 가능).
- 유효한 경우 데이터가 스키마에 일치한다는 녹색 메시지가 표시됩니다.
- 유효하지 않은 경우 각 오류의 JSON 경로, 오류 메시지, 추가 파라미터가 나열됩니다.
Load Example을 클릭하면 샘플 User 스키마와 JSON이 자동으로 채워져 바로 사용해볼 수 있습니다.
오류 출력 이해하기
각 유효성 검사 오류에는 세 가지 정보가 포함됩니다:
- 경로 — 실패한 값의 JSON Pointer (예:
/items/0/price, 최상위 레벨은(root)). - 메시지 — AJV의 쉬운 설명 (예: must be integer, must have required property ‘name’).
- 파라미터 — 허용된 타입, 최솟값, 필요한 패턴 등 추가 컨텍스트.
주요 JSON Schema 키워드
type— JSON 타입 제한:string,number,integer,boolean,array,object,null.required— 객체에 반드시 있어야 하는 속성 이름 배열.properties— 객체의 각 명명된 속성에 대한 제약 정의.additionalProperties: false—properties에 없는 속성 거부.minimum/maximum— 숫자 범위 제약.minLength/maxLength— 문자열 길이 제약.pattern— 정규식으로 문자열 검증 (예:”^[a-z]+“).enum— 고정된 값 집합으로 제한.items— 배열 요소의 스키마 정의.
스키마 예시
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"required": ["name", "age"],
"properties": {
"name": { "type": "string", "minLength": 1 },
"age": { "type": "integer", "minimum": 0 },
"email": { "type": "string" }
},
"additionalProperties": false
}
유효한 데이터: {"name":"Alice","age":30}
유효하지 않은 데이터: {"name":"","age":-1,"extra":true} — 세 개의 오류가 발생합니다.
FAQ
지원되는 JSON Schema 초안은 무엇인가요?
Draft-07(가장 널리 사용되며 OpenAPI 3.0 및 많은 검사기와 호환)과 Draft 2020-12(최신 명세)를 지원합니다. 검증 전 드롭다운으로 초안을 전환하세요.
/user/age 같은 오류 경로는 무엇을 의미하나요?
오류 경로는 JSON Pointer 구문(RFC 6901)을 따릅니다. /user/age는 user 객체 내의 age 속성이 유효성 검사에 실패했음을 의미합니다. 루트 객체는 /로 표시되며, 배열 항목은 /items/0, /items/1 등으로 나타납니다.
JSON Schema란 무엇인가요?
JSON Schema는 JSON 문서를 주석 처리하고 유효성을 검사하기 위한 어휘입니다. JSON 객체의 예상 구조, 유형, 필수 필드, 값 범위, 패턴을 정의할 수 있습니다. API 요청/응답 검증, 설정 파일 검증, 데이터 파이프라인 검증 등에 널리 사용됩니다.
배열을 루트로 하는 JSON을 검증할 수 있나요?
네. 스키마를 배열로 정의하세요(예: {"type": "array", "items": {"type": "string"}}). 그런 다음 ["a", "b"]와 같은 JSON 배열을 데이터로 붙여넣으면 됩니다.
데이터가 서버로 전송되나요?
아니요. 유효성 검사는 AJV 라이브러리를 사용하여 브라우저에서 완전히 실행됩니다. 스키마와 JSON 데이터는 사용자의 기기를 벗어나지 않습니다.