언제 쓰나
API 응답이 schema 명세를 만족하는지 통합 테스트 직전 확인할 때, 큰 JSON 응답에서 특정 필드만 발췌해 디버깅할 때, 백엔드 schema 변경 후 프론트가 받게 될 데이터를 시뮬레이션해 어디가 깨질지 미리 볼 때.
두 모드, 한 도구
상단 segmented 로 전환:
- Schema 검증 — JSON Schema (draft-07) 로 데이터 검증. 모든 위반을 한 번에 표시 (allErrors). instance path · keyword · 메시지 3 칼럼.
- JSONPath 추출 — 큰 JSON 에서 path 로 매치 노드만 발췌. jsonpath-plus 의 superset 문법.
서로 직교 — schema 는 전체 검증, JSONPath 는 부분 추출. 둘 다 자주 필요한데 별도 사이트 왔다갔다 하기 번거로워 한 도구로.
라이브러리 lazy
- ajv 8.x (~80KB gz) — JSON Schema 검증의 사실상 표준.
- jsonpath-plus 10.x (~5KB gz) — JSONPath 평가.
둘 다 dynamic import. 페이지 client 번들은 ~10KB, 사용자가 schema / path 입력 시작할 때 chunk fetch.
JSONPath 문법 cheatsheet
$.store.books[*].title # 모든 책 제목
$..books[?(@.price < 10)] # 가격 10 미만 책
$..author # 모든 author 키 (재귀)
$..books[0:2] # 첫 두 권
$..books[-1:] # 마지막 권
$.store.books[*].price # 모든 가격
RFC 9535 표준에 가깝지만 jsonpath-plus 가 살짝 superset (script
expression ?(@...) 같은 것은 RFC 외).
검증 모드 keyword
ajv 8.x 의 draft-07 keyword 전체 동작:
type(string · number · integer · boolean · object · array · null)required·enum·constproperties·additionalProperties·patternPropertiesitems·minItems·maxItems·uniqueItemspattern·minLength·maxLengthminimum·maximum·exclusiveMinimum·exclusiveMaximummultipleOfif/then/else·allOf/anyOf/oneOf/not
format (email · uuid · date-time 등) 은 무시 — V1 은 ajv-formats
미포함. format 검증이 필요하면 V2.
안 맞는 경우
- API 모킹 / fake server — schema 만족하는 fake 데이터 생성은 별개. 본 도구는 검증만, 생성 안 함. faker / json-schema-faker 등 별도.
- schema 자체의 의미 검토 — required 누락 / 잘못된 type 같은 schema 디자인 문제는 자동 감지 안 됨. 본 도구는 schema 형식적 정합성만.
- OpenAPI / Swagger 직접 — OpenAPI 안에 들어 있는 component schema 를 빼서 붙여넣어야 함. 본 도구는 raw JSON Schema 만 입력.
보안
API 응답에 인증 토큰 · 사용자 ID · 결제 정보가 섞여 있어도 안전. ajv 와 jsonpath-plus 모두 클라이언트 번들로 동적 로드되며, schema · 데이터 · path 모두 외부로 전송되지 않습니다.
JSON 은 페이지 안에서만
API 응답에 인증 토큰 · 사용자 ID · 결제 정보가 섞여 있어도 안전. ajv 와 jsonpath-plus 모두 클라이언트 번들로 동적 로드되며, schema · 데이터 · path 모두 외부로 전송되지 않습니다.