JSONPath 테스터

JSON 문서를 붙여넣고 $..book[?(@.price<10)] 같은 JSONPath 표현식을 입력하세요. 테스터가 문서에 대해 평가해 일치하는 모든 값을 각 일치의 정확한 경로와 함께 보여줍니다. 스크립트나 API 사양(Postman, k6, JMeter 모두 JSONPath를 사용)에 붙여넣을 쿼리를 검증하는 데 유용합니다.

JSONPath 표현식 테스트 방법

  1. 1

    JSON 문서 붙여넣기

    유효한 JSON이면 무엇이든: 객체, 배열, 깊이 중첩된 것.

  2. 2

    표현식 입력

    루트는 `$`로 시작합니다. 자식은 `.`, 재귀 하강은 `..`, 와일드카드는 `[*]`를 사용합니다.

  3. 3

    일치 실시간 확인

    각 일치는 값과 전체 JSONPath와 함께 표시되며 원본 문서에서 강조됩니다.

  4. 4

    결과 복사

    일치를 JSON 배열로 복사하거나, 다운스트림 코드에서 쓸 개별 경로를 복사합니다.

JSONPath 구문 참조

표현식 의미
$ 루트 요소
$.store store라는 $의 자식
$["store"] 같음, 대괄호 형식
$..author 모든 깊이의 모든 author 속성
$.store.book[*] store의 모든 책
$.store.book[0] 첫 번째 책
$.store.book[-1:] 마지막 책
$.store.book[0:2] 처음 두 책(슬라이스)
$.store.book[?(@.isbn)] isbn 속성이 있는 책
$.store.book[?(@.price < 10)] 10보다 싼 책
$.store.book[?(@.category == "fiction")] 소설책
$..* 어디에나 있는 모든 값

필터 표현식

필터 표현식은 현재 노드를 참조하려고 @를 사용합니다. 테스터는 일반 연산자 ==, !=, <, >, <=, >=, &&, ||와 정규식 =~를 지원합니다.

$.items[?(@.qty >= 10 && @.price < 50)]

JSONPath 방언

JSONPath 구현은 여러 가지이며 작은 비호환성이 있습니다. 이 테스터는 Goessner 원본 사양RFC 9535 개선안을 따르며, 다음과 호환됩니다:

  • Jayway JsonPath (Java)
  • jsonpath-plus (JavaScript)
  • jsonpath-rw (Python)
  • jq 기본 경로 표현식

호환되지 않는 기능(임의의 JS가 있는 스크립트 표현식 등)은 오류 패널에 표시됩니다.

JSONPath가 전체 파서보다 나을 때

  • 테스트 단언: Postman의 pm.expect(jsonData).to.have.jsonPath(...)는 경로를 받습니다.
  • 설정 추출: 라이브러리 없이 거대한 API 응답에서 값 하나를 뽑아냅니다.
  • 부하 테스트 스크립트: k6, JMeter, Gatling 모두 검사에 JSONPath를 지원합니다.
  • Kubernetes / AWS CLI: --query--jsonpath 플래그로 명령줄에서 출력을 다듬을 수 있습니다.

흔한 실수

  • 배열에 . 사용. $.users.0.name은 틀립니다. $.users[0].name을 쓰세요.
  • 깊이를 위한 .. 잊기. $.name 같은 경로는 최상위 name만 일치합니다. 전부 원하면 $..name을 쓰세요.
  • JSONPath와 jq 혼동. jq는 제어 흐름과 변환이 있는 상위집합입니다. JSONPath는 순수히 추출용입니다.
  • 정규식 앵커링. =~ /foo/는 부분 문자열을 일치시킵니다. 정확한 일치는 /^foo$/를 쓰세요.

자주 묻는 질문

JSONPath는 순수 추출 언어입니다, 선택, 필터, 슬라이스. jq는 제어 흐름, 변수, 함수가 있는 완전한 쿼리/변환 언어입니다. 단순 추출에는 JSONPath가 더 이식성이 좋고, 변환에는 jq를 쓰세요.

Goessner 원본 사양과 RFC 9535 개선안으로, Jayway JsonPath(Java)와 jsonpath-plus(Node)에 맞습니다. 방언별 확장(임의 코드가 있는 스크립트 표현식)은 지원되지 않습니다.

네. $..book[?(@.title =~ /^Harry.*/)]는 제목이 “Harry”로 시작하는 모든 책을 일치시킵니다. 완전 일치 동작에는 ^$를 쓰세요.

네. JSON과 JSONPath 평가기 모두 브라우저에 있습니다. 문서와 쿼리는 탭을 떠나지 않습니다.

관련 도구

이 도구는 다른 언어로도 제공됩니다