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 或无前导零的无符号整数,特殊 token "-" 在读取时没有值。也接受 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 是什么?
由于 / 分隔 token 且 ~ 是转义字符,键中的字面 / 写作 ~1,字面 ~ 写作 ~0。因此成员 "a/b" 用 /a~1b 访问,"m~n" 用 /m~0n。反转义时先替换 ~1 再替换 ~0,正如 RFC 所要求。
空指针返回什么?
空字符串是引用整个文档的有效指针,因此返回完整的 JSON 值。注意 "/" 并非空 — 它是带一个空字符串 token 的指针,选中键为空字符串的成员。
为何我的指针解析失败?
常见原因:成员或数组索引不存在;数组索引有前导零(仅 0、1、2… 且不可补零有效);用了 "-"(读取时无值);或非空指针未以 / 开头。错误信息会指出失败的具体 token。

相关工具