utilbox
개발자

JSONPath 평가기

JSONPath 표현식($.foo[0].bar, $..price)을 JSON에 적용해 매칭 결과를 즉시 확인합니다.

JSON 데이터
JSONPath 표현식
예시:
매칭 결과 (3개)
$.store.book[0].title
"아프니까 청춘이다"
$.store.book[1].title
"채식주의자"
$.store.book[2].title
"82년생 김지영"
JSON 출력
[
  "아프니까 청춘이다",
  "채식주의자",
  "82년생 김지영"
]

JSONPath 문법 요약

$루트
.foo속성 접근 (객체)
[0]배열 인덱스 (음수 = 끝에서)
[*]모든 원소·속성 (와일드카드)
[a,b,c]여러 인덱스 동시 선택
[s:e:t]배열 슬라이스 (start:end:step)
..foo재귀 — 깊이 무관 모든 foo 속성
..*재귀 — 모든 자손

JSONPath 평가기 자세히 알아보기

JSONPath는 JSON 문서에서 특정 값을 선택하는 쿼리 언어입니다. XPath가 XML에서 하는 역할을 JSON에서 합니다. `$.store.book[*].title` 같은 표현식 한 줄로 깊이 들어 있는 모든 책 제목을 한 번에 뽑을 수 있어, 큰 API 응답이나 설정 파일에서 원하는 부분만 빠르게 골라낼 때 유용합니다. 이 도구는 JSON과 JSONPath 표현식을 같은 화면에서 편집하면서 매칭 결과를 즉시 확인하는 평가기입니다. 결과는 매치별로 "경로 + 값"을 표시하고, 전체를 JSON 배열로 합치거나 값만 줄바꿈으로 펼친 텍스트로 복사할 수 있습니다. 와일드카드(`*`), 재귀(`..`), 슬라이스(`[1:5:2]`), 음수 인덱스(`[-1]`), 다중 인덱스(`[1,3,5]`) 등 핵심 문법을 모두 지원합니다.

이럴 때 사용하세요

  • REST API 응답에서 특정 필드만 추출 — 예: $..id, $..price
  • 설정 파일(package.json, tsconfig.json)에서 깊은 경로 탐색
  • GraphQL 응답의 nested data 검증 — 매칭이 비어 있으면 에러
  • jq 대신 브라우저에서 빠르게 한 번 평가하고 싶을 때
  • 스크래핑 결과 JSON에서 원하는 항목만 추출해 CSV로 변환하기 전 확인

JSONPath 평가기 자주 묻는 질문

RFC 9535 표준 JSONPath와 동일한가요?
주요 문법(루트 $, 속성 ., 인덱스 [n], 와일드카드 [*], 재귀 .., 슬라이스 [s:e:t], 다중 인덱스 [1,3,5], 음수 인덱스 [-1])은 표준과 동일하게 동작합니다. 다만 RFC 9535의 일부 고급 기능(필터 표현식 [?expr], 함수 length()/count() 등)은 미지원입니다. Goessner의 원조 JSONPath와는 호환되며, 실무에서 가장 자주 쓰는 부분은 모두 됩니다.
필터 표현식 $..book[?(@.price < 10)] 같은 건 안 되나요?
현재 미지원입니다. 가격 필터링이 필요하면 1) $..price로 모든 가격을 뽑은 뒤 결과 JSON을 다시 처리하거나, 2) jq 같은 외부 도구를 사용하세요. 필터 지원은 추후 업데이트 예정이지만, 단순한 추출 용도에는 본 도구로 충분히 커버됩니다.
음수 인덱스가 표준 JSONPath에서 지원되나요?
원조 Goessner JSONPath는 음수 인덱스를 정의하지 않았지만, 대부분의 실무 구현(jsonpath-plus, 본 도구 포함)이 Python 슬라이싱처럼 음수 = "끝에서부터"를 지원합니다. RFC 9535 표준에서도 슬라이스의 음수 인덱스는 정식 정의됐습니다. $.items[-1]은 마지막 원소, $.items[-2]는 끝에서 두 번째입니다.
결과를 JSON과 텍스트 중 어느 형식으로 받아야 하나요?
JSON 형식은 매칭이 1개면 그 값 그대로, 2개 이상이면 배열 [v1, v2, ...]로 직렬화합니다. 다음 단계에서 JSON 처리 도구(json-formatter, json-csv-converter)로 흘릴 때 사용하세요. 텍스트 형식은 각 매치 값을 줄바꿈으로 분리합니다 — 문자열만 모은 결과(예: $..title)를 char-counter나 text-cleaner로 흘릴 때 자연스럽습니다.
$.foo와 $['foo']의 차이는?
기능적으로 동일합니다. .foo는 키가 영문/숫자/언더스코어로만 구성됐을 때 사용하는 짧은 표기, ['foo']는 키에 공백·하이픈·한글 같은 특수문자가 있을 때 쓰는 명시적 표기입니다. $['order-id']나 $['상품']처럼 점 표기로는 안 되는 키에 사용하세요. 본 도구는 둘 다 지원합니다.