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/id | 42 |
| /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/max | 100 |
빈 포인터 = 전체 문서. 키의 /는 ~1, ~는 ~0으로 이스케이프. #/a/b 같은 URI 프래그먼트도 가능.
사용법
- JSON 문서를 붙여넣거나 편집.
- JSON 포인터 입력(예: /user/name 또는 #/settings/limits/max)하거나 포인터 목록의 행 클릭.
- 해석된 값을 읽으세요. 키 안의 슬래시는 ~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…만 유효, 패딩 불가), "-" 사용(읽기 시 값 없음), 또는 비어 있지 않은 포인터가 /로 시작하지 않음. 오류 메시지가 실패한 토큰을 정확히 알려 줍니다.
관련 도구
Base64 ↔ 16진수 변환기
Base64 문자열을 16진수 바이트로, 16진수를 다시 Base64로 변환합니다. URL-safe 지원, 브라우저에서 동작합니다.
Quoted-Printable 인코더 & 디코더
텍스트를 MIME Quoted-Printable(RFC 2045)로 인코딩하거나 다시 디코딩 — =XX 이스케이프·소프트 줄바꿈·UTF-8 처리, 인코딩 시 76자 줄바꿈 — 브라우저에서.
해시 생성기 (SHA)
텍스트로 SHA-1·SHA-256·SHA-384·SHA-512 해시를 생성하세요.
URL 인코더 / 디코더
URL용으로 텍스트를 퍼센트 인코딩하거나, 인코딩된 URL을 디코딩하세요.
Base64 인코더 / 디코더
텍스트를 Base64로 인코딩하거나 다시 텍스트로 디코딩하세요.
JSON 포맷터 & 검증기
브라우저에서 바로 JSON을 포맷·정렬·압축·검증하세요.