JSONPath 테스터
JSONPath 표현식
JSON 입력
결과
| 구문 | 설명 |
|---|---|
| $ | 루트 객체 또는 배열 |
| @ | 현재 노드(필터 표현식에서 사용) |
| object.property | 점 표기 자식 |
| ['object'].['property'] | 대괄호 표기 자식(들) |
| ..property | 재귀적 하향 탐색 |
| * | 와일드카드. 모든 요소를 선택합니다 |
| [n] | 배열에서 n번째 요소를 선택합니다 |
| [n1,n2] | 배열 항목 n1과 n2를 선택합니다(합집합) |
| [start:end:step] | 배열 슬라이스 연산자 |
| ?(expression) | 필터 표현식 |
| (expression) | 스크립트 표현식 |
기술적 세부 정보
JSONPath 테스터가 작동하는 방식
도구가 하는 일
JSONPath 테스터를 사용하면 XML에서 XPath가 작동하는 방식과 유사하게 JSONPath 표현식을 통해 중첩된 JSON 데이터를 쿼리할 수 있습니다. 이 jsonpath 테스터는 JSONPath 표현식 테스터이자 json 선택기로서, 개발자가 복잡한 JSON 구조에서 특정 값, 배열 또는 객체를 추출하는 데 도움을 줍니다. jsonpath online 테스트가 필요할 때 이 도구는 일치하는 모든 값과 해당 경로를 표시합니다. 점 표기법( $.store.book), 대괄호 표기법( $['store']['book']), 와일드카드( $..*), 배열 슬라이싱, 필터링 표현식 등 JSONPath 문법을 지원합니다. 이 도구는 jsonpath-plus 시맨틱을 따릅니다. JSONPath 구현체는 서로 다를 수 있으므로 다른 곳에서는 동작하지만 여기서는 동작하지 않는다면 방언(dialect) 차이일 수 있습니다. 일치한 값과 JSONPath 경로를 모두 표시하여 표현식이 JSON 구조를 어떻게 탐색하는지 쉽게 이해할 수 있습니다.
개발자들이 흔히 사용하는 사례
개발자는 API 응답, 구성 파일 또는 복잡하게 중첩된 JSON 데이터 구조를 다룰 때 JSONPath 테스터를 사용합니다. JSONPath 표현식 테스터는 깊게 중첩된 객체에서 특정 필드를 추출하고, 조건(predicate)으로 배열을 필터링하거나, 특정 키의 모든 발생 위치를 찾는 데 도움이 됩니다. 많은 개발자가 REST API의 JSON 데이터를 쿼리하고, 로그 파일을 파싱하거나, 복잡한 구성 객체를 탐색하기 위해 JSONPath 테스터를 사용합니다. 이 도구는 데이터 변환을 디버깅하고, API 응답을 검증하거나, 복잡한 JSON 스키마를 이해할 때 유용합니다. JSONPath 쿼리를 실행하기 전에 가독성을 높이기 위해 JSON Formatter로 JSON을 포맷하고 싶을 수 있습니다. 구성 파일의 경우 JSON ↔ YAML Converter가 형식 간 변환에 도움이 됩니다. 배열 데이터를 검사할 때는 JSON Array to Table 도구가 결과를 표 형식으로 내보내 더 쉽게 분석할 수 있습니다.
데이터 형식, 타입 또는 변형
JSONPath는 JSON 구조를 탐색하는 여러 방법을 제공합니다. 이 도구는 루트 선택자($), 자식 선택자(. 또는 []), 하위(자손) 선택자( ..), 배열 인덱싱([0], [-1]), 배열 슬라이싱( [0:3])을 지원합니다. 개발자가 자주 사용하는 JSONPath 표현식 예시는 다음과 같습니다:
$.items[*].id— items 배열에서 모든 id 필드 추출$..id— 어떤 중첩 수준에서든 모든 id 필드 찾기$['key-with-dash']— 특수 문자가 포함된 키에 접근$..book[?(@.price < 10)].title— 가격으로 책을 필터링하고 제목 추출
이 표현식들은 JSONPath가 중첩 배열을 쿼리하고, 조건(predicate)으로 객체를 필터링하며, 복잡한 구조에서 특정 필드를 추출하는 방법을 보여줍니다.
흔한 함정과 엣지 케이스
흔한 실수 중 하나는 JSONPath를 JavaScript 객체 속성 접근과 혼동하는 것입니다. JSONPath는 배열 필터링과 와일드카드에 대해 다른 문법을 사용합니다. 또 다른 문제는 점 표기법과 대괄호 표기법을 언제 사용해야 하는지 이해하는 것입니다. 점 표기법은 단순한 키에 잘 동작하지만, 특수 문자가 포함된 키이거나 표현식을 사용할 때는 대괄호 표기법이 필요합니다. 배열 인덱싱도 까다로울 수 있습니다. [-1] 같은 음수 인덱스는 마지막 요소를 가리키지만, 모든 JSONPath 구현체가 이를 지원하는 것은 아닙니다. 필터링 표현식은 올바른 비교 연산자를 사용해야 하며 @로 현재 항목을 참조해야 합니다. 하위(자손) 선택자(..)는 의도보다 더 많은 요소와 매칭되면 예상치 못한 결과를 반환할 수 있습니다. 개발자는 빈 배열, null 값, 매우 깊게 중첩된 객체 같은 엣지 케이스를 포함해 다양한 JSON 구조로 JSONPath 표현식을 테스트해야 합니다. 일부 JSONPath 구현체는 엣지 케이스 처리 방식에 미묘한 차이가 있으므로 테스트가 필수입니다.
오류 및 검증
JSONPath를 사용할 때 여러 오류 상황이 발생할 수 있습니다. 유효하지 않은 JSON 입력은 JSONPath 표현식을 평가하기 전에 파싱 오류를 발생시킵니다. 유효하지 않은 JSONPath 표현식은 문법에서 무엇이 잘못되었는지 알려주는 오류 메시지를 반환합니다. 표현식이 JSON 구조에서 어떤 값과도 매칭되지 않으면 결과는 빈 배열로 반환되는데, 이는 정상 동작이며 오류가 아닙니다. 이 도구는 JSON 문법과 JSONPath 표현식 문법을 모두 검증하여 잘못된 입력에 대해 명확한 오류 메시지를 제공합니다. JSONPath 표현식이 유효하지만 결과가 없다면, 표현식이 JSON 데이터 구조와 맞지 않거나 데이터에 기대한 필드가 없을 수 있습니다.
코드 대신 이 도구를 사용해야 하는 경우
빠른 쿼리 개발, 복잡한 표현식 디버깅, 또는 JSON 데이터 구조 탐색을 위해 이 JSONPath 테스터를 사용하세요. 특히 익숙하지 않은 API나 복잡하게 중첩된 데이터를 다룰 때, 코드에 구현하기 전에 JSONPath 표현식을 테스트하는 데 이상적입니다. 시각적 피드백을 통해 표현식이 특정 데이터와 매칭되는지/되지 않는지 이유를 파악할 수 있습니다. 프로덕션 코드에서는 JSON 데이터를 효율적으로 처리할 수 있도록 애플리케이션에 통합된 JSONPath 라이브러리를 사용하세요. 브라우저 도구는 대화형 개발과 탐색에 강점이 있고, 코드 기반 솔루션은 성능, 타입 안정성, 데이터 처리 파이프라인과의 통합을 제공합니다. 대용량 데이터셋이나 고성능 애플리케이션의 경우, 사용하는 프로그래밍 언어의 네이티브 JSONPath 구현이 브라우저 기반 도구보다 더 나은 성능을 제공합니다.