AZ Tools

JSON 포인터 리졸버 (RFC 6901)

개발

JSON 포인터는 /user/roles/0 같은 슬래시 구분 경로로 JSON 문서 안의 한 값을 가리키는 표준(RFC 6901) 방식입니다. JSON Schema $ref, JSON Patch, JSON Merge Patch, 많은 OpenAPI 도구가 내부적으로 이를 사용합니다. 문서와 포인터를 붙여넣으면 어떤 값을 선택하는지 보기 좋게 출력합니다. 리졸버는 스펙을 정확히 구현합니다: 빈 포인터는 전체 문서를 반환하고, ~1은 리터럴 슬래시, ~0은 리터럴 틸드를 뜻하므로(따라서 "a/b" 키는 /a~1b로 접근), 배열 인덱스는 0이거나 선행 0 없는 부호 없는 정수여야 하며, 특수 토큰 "-"는 읽기 시 값이 없습니다. URI 프래그먼트 포인터(#/user/roles/0)도 받아 퍼센트 디코딩합니다. 또한 문서 내 모든 포인터를 값 미리보기와 함께 나열해, 클릭으로 임의 노드의 정확한 경로를 찾을 수 있습니다. 모든 처리는 로컬에서 실행되며 업로드되지 않습니다.

해석된 값

"admin"

이 문서의 포인터 (클릭하여 사용)

(루트){…} (3)
/user{…} (3)
/user/id42
/user/name"Ada"
/user/roles[…] (2)
/user/roles/0"admin"
/user/roles/1"editor"
/a~1b"slash in key"
/settings{…} (2)
/settings/theme"dark"
/settings/limits{…} (1)
/settings/limits/max100

빈 포인터 = 전체 문서. 키의 /는 ~1, ~는 ~0으로 이스케이프. #/a/b 같은 URI 프래그먼트도 가능.

사용법

  1. JSON 문서를 붙여넣거나 편집.
  2. JSON 포인터 입력(예: /user/name 또는 #/settings/limits/max)하거나 포인터 목록의 행 클릭.
  3. 해석된 값을 읽으세요. 키 안의 슬래시는 ~1, 틸드는 ~0으로 이스케이프합니다.

자주 묻는 질문

JSON 포인터는 JSONPath와 어떻게 다른가요?
JSON 포인터(RFC 6901)는 단순한 슬래시 구분 경로로 정확히 한 값을 가리키며 JSON Schema·JSON Patch·OpenAPI가 사용합니다. JSONPath는 와일드카드·필터·재귀 하강으로 여러 값을 매칭할 수 있는 쿼리 언어입니다. 전자는 이 도구를, 후자는 JSONPath 테스터를 쓰세요.
~0과 ~1은 무엇인가요?
/가 토큰을 구분하고 ~가 이스케이프 문자이므로, 키 안의 리터럴 /는 ~1, 리터럴 ~는 ~0으로 씁니다. 따라서 "a/b" 멤버는 /a~1b로, "m~n"은 /m~0n으로 접근합니다. 언이스케이프 시 ~1을 ~0보다 먼저 치환하는데, RFC가 요구하는 그대로입니다.
빈 포인터는 무엇을 반환하나요?
빈 문자열은 전체 문서를 가리키는 유효한 포인터이므로 전체 JSON 값을 반환합니다. "/"는 비어 있지 않습니다 — 빈 문자열 토큰 하나를 가진 포인터로, 키가 빈 문자열인 멤버를 선택합니다.
포인터 해석이 왜 실패했나요?
흔한 이유: 멤버나 배열 인덱스가 없음, 배열 인덱스에 선행 0이 있음(0, 1, 2…만 유효, 패딩 불가), "-" 사용(읽기 시 값 없음), 또는 비어 있지 않은 포인터가 /로 시작하지 않음. 오류 메시지가 실패한 토큰을 정확히 알려 줍니다.

관련 도구