MYMONDAY.ai
서비스스튜디오도구데이터·포맷73CSS 생성기19색상·이미지10인코딩·보안10웹·SEO11개발·데브옵스10파일·내보내기18계산기6가이드

JSONPath 테스터

JSON 문서와 JSONPath 쿼리를 입력하면 어떤 값이 일치하는지, 어디에 있는지, 문서의 몇 번째 줄인지 보여 줍니다.

  • 브라우저에서 처리
  • 가입 없음
  • 무료

도구 작업 공간

예제

JSON 문서

일치 결과

⌘/Ctrl + Enter로 값 복사
일치 결과2

문법

  • $ 루트
  • .key ['key'] 자식 하나
  • ..key 모든 깊이의 key
  • * 모든 자식
  • [0] [-1] 배열 인덱스, 뒤에서부터
  • [1:3] 배열 슬라이스
  • [?(@.price<10)] 현재 항목 @에 대한 필터
문서 (일치 항목 강조)
{
  "store": {
    "book": [
      {
        "category": "reference",
        "author": "Nigel Rees",
        "title": "Sayings of the Century",
        "price": 8.95
      },
      {
        "category": "fiction",
        "author": "Evelyn Waugh",
        "title": "Sword of Honour",
        "price": 12.99
      },
      {
        "category": "fiction",
        "author": "Herman Melville",
        "title": "Moby Dick",
        "isbn": "0-553-21311-3",
        "price": 8.99
      },
      {
        "category": "fiction",
        "author": "J. R. R. Tolkien",
        "title": "The Lord of the Rings",
        "isbn": "0-395-19395-8",
        "price": 22.99
      }
    ],
    "bicycle": {
      "color": "red",
      "price": 19.95
    }
  }
}

JSONPath 테스터는 $.store.book[?(@.price<10)].title 같은 표현식이 실제 문서에서 무엇을 선택하는지 보여 주므로, API, 로그 파이프라인, 테스트 단언, JSONPath를 받는 도구용 쿼리를 쓸 때 짐작할 필요가 없어집니다. 일치 항목마다 정규화된 경로($['store']['book'][0]['title'])와 값을 보여 주고, 결과 아래에는 일치한 줄을 강조한 문서가 나옵니다. 결과를 누르면 그 줄로 스크롤됩니다.

쿼리는 json-p3 라이브러리로 RFC 9535 JSONPath 문법에 따라 실행됩니다. 필터와 표준 함수는 지원하지만 자바스크립트 스크립트나 메서드 호출은 지원하지 않습니다. 유효한 쿼리가 아무것도 선택하지 않으면 힌트와 함께 일치 없음 상태가 나오고, 문법 오류는 쿼리 입력란 아래에 표시됩니다.

문서는 먼저 엄격한 파서로 검사하므로 문법 오류는 줄·열과 오류 위치로 이동 버튼과 함께 나타납니다. 모든 처리는 브라우저 탭 안에서 이루어지고 서버로 전송되지 않습니다. 문서는 최대 1MiB, 쿼리는 최대 4KiB입니다.

사용 방법

  1. 문서 붙여넣기

    JSON을 문서 편집기에 붙여넣거나 파일을 끌어다 놓거나 예제(서점, 사용자, 엣지 케이스)를 불러옵니다. JSON이 올바르지 않으면 줄·열과 오류 위치로 이동 버튼이 나오고 쿼리는 실행되지 않습니다.

  2. 쿼리 작성

    쿼리 입력란에 루트를 뜻하는 $로 시작하는 JSONPath를 적습니다. 결과 옆의 문법 패널에 자식, 재귀 탐색, 와일드카드, 인덱스, 슬라이스, 필터 같은 기본 요소가 정리되어 있습니다.

  3. 일치 결과 읽기

    개수가 일치하는 값의 수를 알려 줍니다. 각 행에는 번호, 정규화된 경로, 값이 있고 긴 값은 목록에서 잘립니다. 아무것도 일치하지 않으면 키 이름과 배열 범위를 확인하거나 $..key를 시도해 보라는 안내가 나옵니다.

  4. 문서에서 일치 항목 따라가기

    행을 누르면 아래 문서 보기가 일치한 줄로 스크롤됩니다. 일치한 줄은 모두 강조되므로 쿼리가 의도한 값을 고르는지 한눈에 확인할 수 있습니다.

  5. 값 복사

    값 복사를 누르거나 Ctrl 또는 ⌘ + Enter를 누르면 일치한 값이 한 줄에 JSON 값 하나씩 복사됩니다.

작동 원리

믿고 쓸 수 있는 JSONPath 문법

이 도구는 json-p3를 쓰며 RFC 9535 JSONPath를 따릅니다. 음수 인덱스, 역순 슬라이스, 괄호를 생략할 수 있는 필터와 표준 함수를 지원합니다. .length는 length라는 객체 멤버를 선택할 뿐 배열 크기를 반환하지 않습니다. 크기는 필터 안에서 length()로 확인하세요.

표는 각 표현식을 아래 예시에서 쓰는 서점 문서에 실행한 결과입니다.

표현식의미서점 문서에서의 결과
$.store.bicycle.color점으로 쓰는 자식(['key']도 가능)"red"
$..price모든 깊이의 키8.95, 12.99, 22.99
$.store.book[-1:].title뒤에서부터 세는 슬라이스"C"
$.store.book[-1].title뒤에서부터 세는 인덱스"C"
$.store.book[0,2].title인덱스 합집합"A", "C"
$.store.book[::2].title간격이 있는 슬라이스"A", "C"
$.store.book[::-1].title역순 슬라이스"C", "B", "A"
$.store.book[?@.price<10].title괄호 없는 필터"A"
$.store.book[?length(@.title)==1].title필터에서 문자열 길이 확인"A", "B", "C"

필터와 표준 함수

필터는 자식마다 조건을 평가하며 @가 현재 자식을 가리킵니다. 비교(<, <=, ==, !=, >, >=), &&, ||, !를 쓸 수 있고 조건을 감싸는 괄호는 생략할 수 있습니다. @.isbn 같은 존재 확인은 값이 0, false, 빈 문자열, null이어도 멤버가 있으면 선택합니다. 비교할 때 문자열을 숫자로 자동 변환하지 않습니다.

필터에서는 자바스크립트 메서드 대신 length(), count(), match(), search(), value()를 쓰세요. 스크립트와 @property는 지원하지 않습니다. match()는 문자열 전체를, search()는 일치하는 부분 문자열을 검사합니다. 이 구현의 두 함수는 자바스크립트 정규식을 사용하므로 패턴 문법이 I-Regexp를 엄격히 구현한 것은 아닙니다.

결과 읽는 법과 한도

경로는 항상 대괄호 형태로 쓰므로 점, 공백, $가 들어간 키도 모호하지 않습니다. 값은 표준 JSON 파서가 읽은 것이어서 숫자는 실수이고 반복된 키는 마지막 값만 남습니다. 문서 보기는 같은 JSON을 공백 2칸으로 다시 들여쓴 것이므로 붙여넣은 텍스트의 줄 번호와는 다릅니다.

전체 일치 개수는 항상 표시됩니다. 앞의 1,000개를 보관하고, 목록에는 처음 200개를 행으로 보여 주며, 줄 강조와 복사는 최대 1,000개까지 적용되고, 문서 보기는 최대 4,000줄까지 그립니다. 1MiB를 넘는 문서와 4KiB를 넘는 쿼리는 거부합니다.

실제 예시

모든 제목
입력
JSONPath 쿼리: $.store.book[*].title
JSON 문서: {"store":{"book":[{"title":"A","price":8.95,"isbn":"1"},{"title":"B","price":12.99},{"title":"C","price":22.99,"isbn":"3"}],"bicycle":{"color":"red"}}}
출력
3개 일치
$['store']['book'][0]['title']  "A"
$['store']['book'][1]['title']  "B"
$['store']['book'][2]['title']  "C"

와일드카드가 모든 책을 선택합니다. 일치 항목마다 정규화된 경로와 값이 나옵니다.

재귀 탐색으로 모든 price
입력
JSONPath 쿼리: $..price
JSON 문서: {"store":{"book":[{"title":"A","price":8.95,"isbn":"1"},{"title":"B","price":12.99},{"title":"C","price":22.99,"isbn":"3"}],"bicycle":{"color":"red"}}}
출력
3개 일치
$['store']['book'][0]['price']  8.95
$['store']['book'][1]['price']  12.99
$['store']['book'][2]['price']  22.99

.. 는 모든 깊이에서 키를 찾습니다.

숫자로 필터링
입력
JSONPath 쿼리: $.store.book[?(@.price<10)].title
JSON 문서: {"store":{"book":[{"title":"A","price":8.95,"isbn":"1"},{"title":"B","price":12.99},{"title":"C","price":22.99,"isbn":"3"}],"bicycle":{"color":"red"}}}
출력
1개 일치
$['store']['book'][0]['title']  "A"

가격이 10 미만인 책만 남기는 필터입니다.

조건 결합
입력
JSONPath 쿼리: $.store.book[?(@.price>10 && @.isbn)].title
JSON 문서: {"store":{"book":[{"title":"A","price":8.95,"isbn":"1"},{"title":"B","price":12.99},{"title":"C","price":22.99,"isbn":"3"}],"bicycle":{"color":"red"}}}
출력
1개 일치
$['store']['book'][2]['title']  "C"

가격이 10보다 크고 isbn이 있는 책은 세 번째 책뿐입니다.

인덱스 합집합
입력
JSONPath 쿼리: $..book[0,2].title
JSON 문서: {"store":{"book":[{"title":"A","price":8.95,"isbn":"1"},{"title":"B","price":12.99},{"title":"C","price":22.99,"isbn":"3"}],"bicycle":{"color":"red"}}}
출력
2개 일치
$['store']['book'][0]['title']  "A"
$['store']['book'][2]['title']  "C"

[0,2]는 첫 번째와 세 번째 원소를 고릅니다.

일치 없음
입력
JSONPath 쿼리: $.nope
JSON 문서: {"store":{"book":[{"title":"A","price":8.95,"isbn":"1"},{"title":"B","price":12.99},{"title":"C","price":22.99,"isbn":"3"}],"bicycle":{"color":"red"}}}
출력
일치 없음
쿼리는 올바르지만 이 문서에서 선택되는 값이 없습니다. 키 이름과 배열 범위를 확인하거나 $..key로 모든 깊이를 검색해 보세요.

아무것도 선택하지 않는 올바른 쿼리는 빈 패널이나 오류가 아니라 힌트가 붙은 일치 없음 상태로 나옵니다.

자주 하는 실수

  • 다른 JSONPath 도구의 연산자는 없을 수 있음

    Jayway 방식의 ?(@.name =~ /^A/)와 ?(@.n in [1,2])는 다른 방언이라는 안내와 함께 거부됩니다. 문자열 전체 패턴은 match(@.name, 'A.*'), 접두어 검색은 search(@.name, '^A'), 여러 값 중 하나는 @.n == 1 || @.n == 2로 쓰세요.

  • 키에 점이나 공백이 있으면 대괄호가 필요

    $.a.b는 키 a 안의 키 b를 뜻합니다. 이름이 a.b인 키는 $['a.b']로, 공백이 있는 키는 $['weird key']로 쓰세요.

  • 재귀 탐색은 생각보다 많이 찾음

    $..price는 의도하지 않은 구역(서점 문서의 자전거 같은 곳)까지 모든 깊이의 price를 반환합니다. 결과 행의 경로가 예상과 같은지 확인하세요.

  • 구현마다 세부 동작이 다름

    없는 멤버와 존재 확인 필터는 RFC 9535 규칙을 따릅니다. 객체 멤버 순서는 보장되지 않으므로 객체 와일드카드나 재귀 탐색 결과 순서에 의존하지 마세요. 다른 라이브러리는 다른 방언을 허용할 수 있으니 실제 배포할 라이브러리에서도 쿼리를 확인하세요.

  • 일치한 값의 숫자는 파싱된 값

    9007199254740993 같은 값은 결과 목록에 9007199254740992로 나옵니다. 결과는 표준 파서에서 나오지만 강조된 문서 보기에는 적은 그대로의 숫자가 보입니다.

  • 문서 한도는 1MiB

    더 큰 파일은 메시지와 함께 거부됩니다. 큰 로그는 대표 샘플만 잘라 내거나, 먼저 JSON 포매터로 구조를 확인하세요.

자주 묻는 질문

어떤 JSONPath 구현을 쓰나요?

RFC 9535 JSONPath를 사용하는 json-p3입니다. 자식 선택, 음수 인덱스, 슬라이스, 합집합, 재귀 탐색, 필터, 표준 함수를 지원하고 부모·속성 이름 확장은 거부합니다.

쿼리의 자바스크립트가 실행되나요?

아니요. RFC 9535 JSONPath에는 자바스크립트 스크립트나 메서드 호출이 없습니다. 필터는 비교·논리 연산자와 표준 JSONPath 함수를 사용합니다.

값으로 필터링하려면?

비교가 있는 필터를 쓰세요. 예를 들어 $.store.book[?(@.price<10)].title나 $.store.book[?(@.price>10 && @.isbn)].title입니다. 문자열은 ?(@.category=='fiction')처럼 따옴표로 비교합니다.

일치 없음은 무슨 뜻인가요?

쿼리는 올바르지만 이 문서에서 선택되는 값이 없다는 뜻입니다. 키 이름 오타, 범위를 벗어난 인덱스, 모든 항목을 걸러 내는 필터가 원인입니다. $..key로 모든 깊이에서 찾아 보세요.

일치 항목은 몇 개까지 보여 주나요?

전체 개수는 항상 표시됩니다. 앞의 1,000개를 보관하며 목록은 처음 200개 행을 보여 주고, 줄 강조와 복사는 최대 1,000개까지 적용됩니다.

점이나 공백이 든 키는 어떻게 조회하나요?

따옴표가 있는 대괄호 표기를 쓰세요. $['a.b']나 $['weird key']처럼 씁니다.

결과를 복사할 수 있나요?

값 복사를 누르거나 Ctrl 또는 ⌘ + Enter를 누르면 일치한 값이 한 줄에 JSON 값 하나씩 복사됩니다.

JSON이 업로드되나요? 한도는요?

업로드되지 않으며 해석과 질의는 브라우저 안에서 이루어집니다. 문서는 최대 1MiB, 쿼리는 최대 4KiB입니다.

마지막 업데이트: