예시
입력 (스키마 + 데이터)
스키마:
{ "type": "object", "required": ["name", "age"], "properties": { "name": { "type": "string" }, "age": { "type": "integer", "minimum": 0 } } }
데이터:
{ "name": "Ada", "age": -3 }검증 결과
❌ 검증 실패 — 1건 - /age: must be >= 0 (현재 값: -3)
참고
Draft 2020-12 + format(email, uri, date 등) 모두 지원. 에러 위치는 JSON Pointer 경로(/a/b)로 표시됩니다.
사용법 / 자주 묻는 질문
이런 경우 사용하세요
- API 응답 페이로드가 정의된 스키마를 따르는지 검증
- form 입력 데이터가 백엔드 스키마와 일치하는지 사전 체크
- OpenAPI / AsyncAPI 정의의 schema 컴포넌트 단독 테스트
- Draft 4 / 6 / 7 / 2019-09 / 2020-12 — 스펙별 동작 비교
- ajv 와 동일한 규칙으로 검증 결과 사전 확인
자주 묻는 질문
- Q.어떤 JSON Schema draft 를 따르나요?
- A.기본은 Draft 2020-12 입니다. 스키마에 `$schema` 가 명시되어 있으면 해당 draft 로 검증합니다(ajv 기반).
- Q.format 검증(email · uri · date)이 동작하나요?
- A.예. ajv-formats 로 표준 format 들이 활성화돼 있습니다. 단, format 은 스펙상 권장 사항(must-check 가 아닌 SHOULD-check)이므로 엄격 검증이 필요하면 추가 규칙을 직접 정의하세요.
- Q.에러 메시지의 `/a/b` 는 무엇인가요?
- A.JSON Pointer 경로입니다. `/a/b` 는 데이터의 `data.a.b` 위치를 가리킵니다. 배열은 `/0`, `/1` 처럼 인덱스로 표기.
재미있는 사실
JSON Schema 는 2009년 Kris Zyp 가 처음 Draft 1 을 IETF 에 제출했습니다 — JSON 데이터의 구조·타입·제약조건을 JSON 자체로 기술하는 메타 스키마. 2024년 현재 여전히 IETF Internet Draft 상태 (RFC 정식화 진행 중) — 15년째 'draft' 인 살아있는 표준입니다.
JSON Schema — Official버전 명명이 시간에 따라 바뀌었어요 — Draft 1~7 (숫자), 그 후엔 Draft 2019-09, Draft 2020-12 (연-월). 호환성 단절을 표시하기 위한 의도적 명명 — 2020-12 가 현재 modern API tooling 의 사실상 표준 (OpenAPI 3.1 도 이 버전 사용).
JSON Schema — SpecificationNode.js 진영의 ajv 는 JSON Schema 의 가장 빠른 구현체로 잘 알려져 있습니다 — 스키마를 미리 JavaScript 함수로 컴파일해 두고 (`compile()` 한 번, `validate()` 무한 호출) 매 요청 검증을 수십 μs 단위로 처리. Fastify·OpenAPI tooling 표준 의존성.
Ajv — JSON Validator
관련 도구
- JSON 포매터 / 검증기
JSON 문자열을 포맷팅·검증·압축합니다. 들여쓰기 조정과 키 정렬 옵션이 있으며, 브라우저에서 즉시 실행됩니다.
- 문자열 케이스 변환
문자열을 camelCase·PascalCase·snake_case·kebab-case·CONSTANT_CASE·Title Case 6개 형태로 동시에 변환해 보여줍니다.
- 정규식 테스터
JavaScript 정규식을 실시간으로 테스트합니다. g/i/m/s/u/y 플래그와 캡처 그룹을 지원합니다.
- Markdown 프리뷰
Markdown을 HTML로 렌더링하여 좌·우로 비교 표시합니다. CommonMark + GFM(테이블·코드 펜스·태스크 리스트) 지원.
- HTML → Markdown
HTML을 Markdown으로 변환합니다. 헤딩·리스트·링크·코드·표·인용 지원. 브라우저 DOMParser 사용 — 정확하고 0 dependency.
- YAML ↔ JSON 변환
YAML과 JSON을 양방향 변환합니다. YAML 측의 주석·멀티라인 문자열을 허용합니다.
- 텍스트 비교
두 텍스트를 줄·단어·문자 단위로 비교하고 추가/삭제를 강조합니다.
- JSON 비교
두 JSON을 정렬·정규화 후 비교, 변경점을 강조합니다. 잘못된 JSON 에러 안내 포함.
- CSV ↔ JSON
CSV와 JSON을 상호 변환합니다. 쿼팅·구분자·헤더 행을 지원합니다.
- SQL 포매터
SQL 쿼리를 들여쓰기·키워드 케이스에 맞게 포매팅합니다. PostgreSQL/MySQL/SQLite/Standard 지원.
- XML 포매터
XML을 보기 좋게 포매팅하거나 압축합니다. SOAP·sitemap·설정 파일에 적합.
- XML ↔ JSON
XML과 JSON을 상호 변환합니다. 속성과 요소 표기를 모두 지원합니다.
- 스마트 붙여넣기
어떤 텍스트든 붙여넣으면 적합한 도구를 추천합니다 — JSON·JWT·Base64·URL·UUID·Cron 등 15종 자동 감지.
- 로렘 입숨 생성기
더미 텍스트를 단어·문장·문단 단위로 생성합니다. 정통 Lorem Ipsum 또는 랜덤.
- JSON Path 추출기
JSONPath 표현식($.store.book[*].author 등)으로 JSON에서 값을 추출합니다.
- JSON Schema 생성기
샘플 JSON에서 JSON Schema(Draft 2020-12)를 자동 생성합니다. 타입·필수 필드·중첩 구조 추론.
- HTML 포매터
HTML을 보기 좋게 들여쓰기·압축·속성 정렬합니다.
- CSS 포매터
CSS를 들여쓰기·압축합니다. 셀렉터·속성 스타일 옵션.
- JavaScript 포매터
JavaScript를 들여쓰기·압축합니다. 중괄호 스타일/들여쓰기 옵션.
- TOML ↔ JSON
TOML과 JSON을 상호 변환합니다. Cargo.toml, pyproject.toml 등 설정 파일에 자주 사용.
- INI ↔ JSON
INI 설정 파일을 JSON으로 변환합니다. [section]·주석(;/#)·key=value 지원.
- JSON → TypeScript
JSON 샘플로 TypeScript interface를 생성합니다. 중첩 객체는 별도 interface로 분리.
- JS Object → JSON
JavaScript 객체 리터럴(따옴표 없는 키, 작은따옴표, trailing comma, 주석)을 표준 JSON 으로 변환합니다. 관대한 파서, 엄격한 출력.
- Slug 생성기
텍스트를 URL-safe slug으로 변환합니다. 구분자/대소문자/악센트 제거 옵션.
- ASCII 트리
들여쓰기 또는 경로 목록을 box-drawing 트리(├── │ └──)로 변환합니다.
- Diff 패치
두 텍스트로부터 unified diff(-u) 패치를 생성합니다. `git apply` / `patch -p0` 호환.
- Mock 데이터 생성기
이름·이메일·UUID·날짜 등 가짜 JSON 레코드를 생성합니다. 외부 의존 없음.
- MongoDB Extended JSON
MongoDB Extended JSON(EJSON)을 Canonical ↔ Relaxed 양방향 변환하거나, BSON wrapper를 제거해 일반 JSON으로 만듭니다. 16종 wrapper 인식 ($oid/$date/$numberLong/$numberDecimal/$binary/…).