개발도구 · 2026년 7월 7일 · 읽는 시간 4분
JSONPath 표현식 직접 써가며 확인하려고 만든 것
중첩된 JSON에서 원하는 값만 뽑아오는 표현식이 맞는지 실행해보기 전까지 확신이 없다.
JSONPath가 필요한 상황
이런 때 쓴다:
- 복잡한 API 응답에서 원하는 필드만 추출
- Elasticsearch 쿼리 작성 시 JSON 경로 확인
- Postman / Insomnia 테스트 스크립트 → 응답 값 검증
- Gatling, k6 등 부하 테스트 → 응답 필드 추출
- Grafana / 모니터링 도구 → JSON 데이터 소스 필드 설정
- 데이터 변환 파이프라인 → 특정 필드만 골라내기
JSONPath 기본 문법
XPath와 비슷한 개념이다:
// 예시 JSON
{
"store": {
"books": [
{"title": "클린코드", "price": 25000, "author": "로버트 마틴"},
{"title": "리팩터링", "price": 32000, "author": "마틴 파울러"},
{"title": "DDD", "price": 40000, "author": "에릭 에반스"}
],
"name": "개발서점"
}
}
// JSONPath 예시
$.store.name → "개발서점"
$.store.books[0].title → "클린코드"
$.store.books[*].title → ["클린코드", "리팩터링", "DDD"]
$.store.books[?(@.price<30000)].title → ["클린코드"]
$..price → [25000, 32000, 40000]자주 쓰는 문법 요약:
$→ 루트.key→ 자식 키 접근[*]→ 배열 전체[0]→ 인덱스[0,2]→ 복수 인덱스[?(@.price > 10000)]→ 필터 표현식..→ 재귀 탐색
기존 방법의 문제
- Node.js → jsonpath 패키지 설치 후 코드 짜서 실행
- Python → jsonpath-ng 라이브러리, 환경 필요
- Postman → API 호출 후 Test 탭에서 확인, JSON 따로 못 넣음
- 머릿속으로 계산 → 중첩 3단계 넘어가면 헷갈림
표현식 한 번 써보고 맞는지 확인하는 데 이렇게 많은 단계가 필요하면 안 된다.
그래서 만들었음
주요 기능:
- JSON 데이터 + JSONPath 표현식 입력 → 결과 즉시 출력
- 매칭된 값 하이라이트
- 배열 결과일 때 개수 표시
- 문법 오류 감지 및 안내
- 예제 JSONPath 모음 클릭해서 바로 테스트
필터 표현식 활용 예시
// 특정 조건으로 필터링 $.users[?(@.age >= 18)] // 성인만 $.products[?(@.stock > 0)] // 재고 있는 것만 $.orders[?(@.status == "완료")] // 완료된 주문만 // 여러 조건 (구현에 따라 다름) $.items[?(@.price < 10000 && @.category == "도서")]
필터 표현식이 생각보다 강력하다. API 응답에서 조건 맞는 항목만 뽑을 때 유용하다.
실제로 써보니
좋은 점:
- JSON 붙여넣고 바로 표현식 테스트 → 즉각적인 피드백
- 결과에 매칭 개수 표시 → 얼마나 뽑히는지 바로 확인
- 잘못된 경로 입력 시 바로 에러 표시
한계:
- JSONPath 구현체마다 문법이 조금씩 달라서 다른 환경에서 안 될 수 있음
- 스크립트 표현식 (eval()) 등 복잡한 구문은 지원 제한
사용법
- JSON 데이터 붙여넣기
- JSONPath 표현식 입력 (예:
$.users[*].name) - 결과 확인
- 맞을 때까지 표현식 수정
써보기
API 응답 구조 파악하거나 데이터 추출 표현식 짤 때 써보면 편함.
#JSONPath #JSON파싱 #데이터추출 #API응답 #개발도구