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에서는 성능 비용이 크니 필요한 범위로 한정하는 게 좋습니다.

관련 도구

광고