본문으로 건너뛰기
yutils
예시

입력 (JSON + JSONPath)

JSON:
{ "store": { "book": [ { "title": "A", "price": 10 }, { "title": "B", "price": 25 } ] } }

JSONPath: $.store.book[?(@.price > 15)].title

출력

[ "B" ]

참고

JSONPath 는 XPath 와 비슷한 JSON 탐색 문법입니다. `$` 는 루트, `..` 는 재귀 descent, `[?(...)]` 는 필터.

사용법 / 자주 묻는 질문

이런 경우 사용하세요

  • 큰 JSON 응답에서 특정 필드만 골라내기
  • 조건 필터로 가격·날짜 조건에 맞는 항목만 추출
  • jq 가 없는 환경에서 빠르게 경로 표현식 테스트
  • API 문서의 sample JSON 에서 의미 있는 데이터만 발췌
  • GraphQL 응답 일부만 시각적으로 확인

자주 묻는 질문

Q.JSONPath 와 jq 는 같은가요?
A.아닙니다. JSONPath 는 XPath 영감 받은 표현식, jq 는 함수형 DSL 입니다. 단순 추출은 JSONPath 가 짧지만 변환·집계는 jq 가 강력합니다.
Q.`..` (재귀 descent) 는 언제 쓰나요?
A.깊이를 모르는 경로에서 모든 매칭을 찾을 때. 예: `$..price` 는 깊이 상관없이 모든 `price` 키를 수집합니다.
Q.결과가 항상 배열인가요?
A.예. JSONPath 는 0개 이상의 매치를 반환하므로 결과는 항상 배열입니다. 단일 값이 필요하면 첫 요소(`[0]`)를 꺼내세요.
재미있는 사실
  • JSONPath 는 2007년 Stefan Gössner 가 XML 의 XPath 를 JSON 에 옮겨오려고 제안한 문법입니다. `$` (루트) / `.` (자식) / `[*]` (와일드카드) / `..` (재귀 디센트) — XPath 와 거의 같은 약속을 JSON 트리에 적용.

    Gössner — JSONPath (2007)
  • JSONPath 는 17년간 표준 없이 여러 라이브러리가 미세하게 다른 dialect 를 만들어왔는데, **2024년 RFC 9535** 로 드디어 공식 IETF 표준이 됐습니다. `$..book[?@.price < 10]` 같은 필터 표현식이 표준 일부 — 이제 라이브러리 간 호환성이 보장됩니다.

    RFC 9535 (2024)
  • JSONPath 의 사촌 — JMESPath, jq 의 query 언어 등도 비슷한 시점에 등장. AWS CLI 가 JMESPath 를 박고, 모든 사람의 셸 alias 에 `jq` 가 박힌 결과 — 'JSON 트리에서 값 뽑기' 가 사실상 셸 도구 카테고리가 됐습니다.

    Wikipedia — JSONPath