JSONPath 구문과 데이터 선택 방식
JSONPath는 XML의 XPath와 유사하게 JSON 데이터 구조에서 특정 요소나 배열을 쿼리하기 위해 사용하는 표준화된 표현식 언어입니다. 이 도구는 다양한 JSONPath 패턴을 지원하여 복잡한 JSON 문서 내에서 원하는 데이터 포인트를 정확하게 추출할 수 있도록 돕습니다.
가장 널리 쓰이는 대표적인 패턴은 다음과 같습니다:
- 재귀 하강(Recursive Descent):
$..price와 같이 작성하면 JSON 구조의 깊이에 상관없이 모든price키를 찾아냅니다. - 필터 표현식(Filters):
[?@.price < 10]과 같은 필터 구문을 사용하여 특정 조건을 만족하는 객체만 선별할 수 있습니다. - 배열 슬라이싱(Array Slices): 배열의 특정 범위나 간격에 해당하는 요소들을 유연하게 선택합니다.
이러한 구문들을 활용하면 중첩된 객체나 배열이 복잡하게 얽힌 API 응답 데이터에서도 필요한 정보만 정확하게 골라낼 수 있습니다.
입력값 제한 및 검증 규칙
안정적인 테스트 환경을 제공하기 위해 도구는 입력 데이터의 크기와 표현식의 길이에 제한을 두고 있습니다.
- JSON 입력: 텍스트 영역에 붙여넣을 수 있는 JSON 데이터의 최대 크기는 500,000자입니다. 이 제한을 초과하면 "JSON 데이터가 너무 커서 여기서 테스트할 수 없습니다. 더 작은 샘플을 사용해 주세요."라는 오류 메시지가 표시됩니다.
- JSONPath 표현식: 입력 필드에 작성할 수 있는 표현식의 최대 길이는 4,000자입니다. 이를 초과하는 경우 "이 JSONPath 표현식은 여기서 테스트하기에 너무 깁니다."라는 메시지가 나타납니다.
입력된 데이터와 표현식은 실시간으로 검증되며, 형식에 문제가 있을 경우 다음과 같은 오류 메시지를 출력합니다:
- JSON 데이터의 형식이 올바르지 않은 경우: "유효하지 않은 JSON 형식입니다."
- JSONPath 표현식의 구문이 잘못된 경우: "유효하지 않은 JSONPath 표현식입니다."
- 표현식을 평가할 수 없는 구조인 경우: "이 JSONPath를 평가할 수 없습니다."
매칭 결과 확인 및 경로 추적
JSONPath 표현식을 입력하면 도구는 일치하는 값 목록을 즉시 화면에 보여줍니다. 각 결과 항목에는 해당 값이 원본 JSON 내에서 위치한 정확한 경로가 함께 표시되므로, 원본 구조에서의 위치 정보를 잃지 않고 매칭된 대상을 복사할 수 있습니다.
도구가 한 번에 표시할 수 있는 최대 결과 개수는 200개입니다. 만약 일치하는 항목이 200개를 초과하면 결과 카운터에 "일치 항목: 200+개"로 표시되며, 목록 하단에 "처음 {max}개만 표시 중입니다."라는 안내가 나타납니다. 일치하는 항목이 전혀 없을 때는 "일치 항목이 없습니다."라는 메시지가 표시되며, 입력을 모두 지우면 "지워졌습니다." 상태가 됩니다.
대용량 데이터 및 복잡한 쿼리 처리
매우 광범위한 재귀 하강 쿼리를 실행하거나 구조가 복잡한 대용량 JSON 데이터를 처리할 때는 브라우저의 연산 자원이 과도하게 소모될 수 있습니다.
이 도구는 브라우저가 멈추거나 응답하지 않는 현상을 방지하기 위해, JSONPath 표현식의 실행 시간이 일정 기준을 초과하면 평가를 자동으로 중단하는 시간 제한 규칙을 적용하고 있습니다. 쿼리 실행 시간이 너무 오래 걸려 타임아웃이 발생하면 "JSONPath 실행 시간이 너무 오래 걸립니다. 표현식을 좁히거나 더 작은 샘플을 사용해 주세요."라는 경고 메시지가 표시됩니다. 효율적인 테스트를 위해서는 쿼리 범위를 좁히거나 더 작은 크기의 샘플 데이터를 사용하는 것이 좋습니다.
브라우저 내 로컬 처리 및 개인정보 보호
이 도구를 사용할 때 입력하는 모든 JSON 데이터와 JSONPath 표현식은 외부 서버로 전송되지 않습니다. 모든 테스트와 연산 과정은 사용자의 웹 브라우저 내에서 직접 수행되며, BroBroGo로 아무것도 업로드되지 않습니다. 따라서 외부 유출 걱정 없이 브라우저 내부에서 안전하게 쿼리 테스트를 진행할 수 있습니다.
자주 묻는 질문 (FAQ)
Q. 어떤 JSONPath 구문을 사용할 수 있나요?
A. $.store.book[*].title과 같은 일반적인 JSONPath 패턴, $..price를 통한 재귀 하강, [?@.price < 10]과 같은 필터링 및 배열 슬라이싱을 사용할 수 있습니다.
Q. 왜 각 결과마다 경로가 함께 표시되나요?
A. 각 경로(Path)는 해당 값이 원본 JSON의 어느 위치에서 나왔는지 보여주므로, 위치 정보를 잃지 않고 매칭된 대상을 복사할 수 있습니다.
Q. 쿼리가 타임아웃되는 이유는 무엇인가요?
A. 매우 광범위한 재귀 쿼리나 거대한 데이터 샘플은 시간이 오래 걸릴 수 있습니다. 테스터는 브라우저가 멈추는 것을 방지하기 위해 짧은 제한 시간 후 실행을 중단하므로, 표현식을 좁히거나 더 작은 샘플을 사용해 주세요.
Q. 입력할 수 있는 JSON 데이터의 크기에 제한이 있나요?
A. 네, JSON 입력은 최대 500,000자까지 지원하며, JSONPath 표현식은 최대 4,000자까지 입력할 수 있습니다. 이 제한을 초과하면 화면에 크기 초과 오류 메시지가 표시됩니다.