JSON Path 테스터
📋 포맷/변환JSONPath 쿼리를 실시간으로 실행하고 JSON 데이터에서 매칭되는 값을 즉시 확인합니다.
🔍 JSON 깊은 곳의 값, 한 줄로 꺼내기
JSONPath는 JSON 트리에서 원하는 값만 골라내는 미니 쿼리 언어입니다. XPath가 XML을 다루듯 $.store.books[0].title 한 줄로 4~5단계 깊이의 값을 꺼낼 수 있습니다. 이 도구는 300ms 디바운스로 즉시 결과를 보여주고, 모든 처리가 브라우저 안에서만 일어납니다. 작성한 표현식은 jq, jsonpath-ng, Spring JsonPath 라이브러리에 그대로 옮겨 쓸 수 있습니다.
📋 JSONPath 문법 핵심
| 표현식 | 설명 | 예시 |
|---|---|---|
| $ | 루트 객체 | $ |
| .key | 속성 접근 | $.store.name |
| [n] | 배열 인덱스 (0부터) | $.books[0] |
| [*] | 배열의 모든 요소 | $.books[*].title |
| .. | 재귀 탐색 (모든 깊이) | $..price |
🛠️ 이런 상황에 가장 효과적이에요
- 3-depth 이상 API 응답 파싱 — $.data.items[*].user.email 한 줄로 100개 항목의 이메일만 추출.
- Postman 테스트 스크립트 작성 전 검증 — JsonPath 표현식이 의도한 노드를 정확히 가리키는지 미리 확인.
- k8s manifest 디버깅 — kubectl get -o jsonpath= 옵션에 들어갈 경로를 여기서 먼저 검증.
- Elasticsearch / OpenSearch 응답 분석 — $.hits.hits[*]._source로 원본 문서만 추출.
- jq 명령 만들기 전 프로토타이핑 — 표현식이 검증되면 jq 문법으로 변환하기 쉬워집니다.
💡 실수 줄이는 팁
- 키 이름에 공백/하이픈이 있으면
$['user-name']처럼 대괄호 표기를 사용하세요. - 결과가
undefined면 경로 중간에 null이 있거나 키 오타일 가능성이 큽니다. - 대규모 배열에서는
[*]대신[0:10]슬라이스로 먼저 표본을 확인하면 빠릅니다.
💡 실무 활용
여기서 검증한 경로는 kubectl get -o jsonpath=, Postman Tests 스크립트, Elasticsearch _source 추출에 그대로 붙여 쓸 수 있어 작업 시간이 크게 줄어듭니다.
자주 묻는 질문
JSONPath와 JSON Pointer(RFC 6901), 어느 쪽을 써야 하나요?▼
JSON Pointer는 한 노드를 정확히 가리키는 표준 경로(예: /store/books/0/title)로, 패치(RFC 6902)나 스키마 참조처럼 정밀함이 필요할 때 좋습니다. JSONPath는 와일드카드, 재귀, 필터까지 지원하는 쿼리 언어라 데이터 추출/탐색에 강합니다. 목적에 따라 다른 도구라고 생각하세요.
필터 표현식 ?(@.price > 10) 같은 것도 지원하나요?▼
이 도구의 내장 엔진은 속성 접근, 배열 인덱스, 와일드카드 등 기본 문법에 초점이 맞춰져 있습니다. 필터 표현식이나 스크립트(?())이 필요하면 jq나 jsonpath-plus 같은 풀스펙 라이브러리를 함께 쓰는 편이 안전합니다.
결과가 배열로 나오는 게 맞나요? 단일 값을 원할 땐 어떻게 하죠?▼
와일드카드(*)나 재귀(..)를 쓰면 매칭이 여러 개일 수 있으니 결과가 배열로 반환됩니다. 단일 값을 원하면 [0]을 추가해서 첫 번째 요소만 꺼내거나, 인덱스를 명시해 매칭을 1개로 좁히세요.
깊이를 모르는 객체에서 특정 키만 모두 찾고 싶어요▼
재귀 탐색 ..을 쓰세요. 예를 들어 $..id라고 적으면 어떤 깊이에 있든 id라는 키를 가진 값을 모두 모아 배열로 반환합니다. 대용량 JSON에서는 성능 비용이 크니 필요한 범위로 한정하는 게 좋습니다.