JSON 工具

JSON Pointer用一个地址,定位一个确切的值

定位值、拆解路径 token,或按明确的编码规则生成地址。

JSON Pointer

JSON 文档

Pointer 文本

结果预览

复制和下载包含完整主结果:选中的 JSON 值、token 数组、生成的 Pointer 或转换后的 token。不包含下方参考信息。

输入仅保留在浏览器内存中,不上传、不保存。

普通形式:空输入选中根节点;/ 选中空键。片段形式:包含 #,使用 UTF-8 百分号编码。空格和换行有意义,输入不会自动去除首尾空白。

请重新运行以更新结果。结果过期时,复制和下载不可用。

用 JSON Pointer 复核 API 响应、Schema 错误或补丁路径所指的位置。地址语法正确,不代表字段一定存在。本工具将解析地址与定位实际文档分成两个操作,帮助你判断是路径写错,还是数据中没有目标。

JSON 指针能区分整个文档、空字段名与数组索引。JSON Pointer 路径查看适合核对单个位置,JSON Pointer 字段定位会读取完整选中值;生成地址则使用显式字符串 token。检查 JSON Pointer 数组项时,索引规则由当前容器类型决定,不能只看 token 像不像数字。

为什么检查 JSON Pointer?

区分三个容易混淆的地址

JSON Pointer 用空字符串表示整个文档,用 / 表示名称为空的属性。只有当前值是数组时,0 才被解释为数组索引;在对象中,它只是一个普通键。看清这些区别,才能判断选中的究竟是哪一层。

三种颜色的指针分别指向文档外框、空心圆键标记对应的值,以及数组第一项。

分清 token 转义与 URI 编码

JSON Pointer 先转义各个 token,再用斜杠连接路径。URI 片段还需要独立的 UTF-8 百分号编码层。查看解码后的 token,就能分清某个斜杠属于字段名,还是用于进入下一级。

几何 token 依次经过盾牌保护的转义层,以及以小方块字节组表示的 URI 编码层。

先选择操作,再填写相关输入

01

解析地址或定位值

解析只需要 Pointer 和表示形式;定位值还需要严格 JSON 文档。请明确选择普通形式或 URI 片段,工具不会根据 # 自动切换。点击运行或按 Ctrl/Cmd+Enter 处理当前输入。

02

从 token 生成,或单独转换 token

生成接收 JSON 字符串数组:[] 对应根,[""] 对应空键,[0] 因为包含数字而被拒绝。转义和反转义只接收一个原始或编码 token,忽略表示形式,也不读取 JSON 文档。

03

确认完整结果后导出

主结果是选中 JSON、解码 token 数组、生成的地址或转换后的 token。复制和下载导出完整主结果,不附带参考信息。示例和清空先显示替换规模,应用后可撤销一次,恢复输入、选项及原结果。

读取地址,不改动原数据

五种明确分工的操作

解析只检查地址语法,不需要目标文档;定位会逐层读取实际数据;生成连接显式字符串 token;转义与反转义转换单个 token。除定位外,其他操作都忽略无关的源文档内容。

显式区分普通形式与片段

普通形式按字面保留 %、+、点、反斜杠、空格和换行。片段以 # 开头,空格及非 ASCII 字符需要有效的 UTF-8 百分号字节。整体百分号解码一次后才分段,随后每个 token 再进行一次波浪号解码。

保留 JSON 类型与数值写法

选中的完整子树保留类型、对象键源顺序,以及大整数、高精度小数、巨大指数和 -0 的原始写法。缺失字段会报错;成功选中的 null、false、0 或空字符串仍是有效结果。

让参考信息可读

JSON Pointer 结果提供解码 token,以及可用的普通形式和片段形式。参考区域用 JSON 字符串表示显示空文本与控制字符,外围显示引号不属于原始地址。每项参考预览最多 5,000 个字符。

地址语义与处理边界

根、空键与精确匹配
非空普通地址必须以 / 开头,连续或末尾斜杠产生的空 token 都保留,不自动修剪空白。对象键逐字符精确匹配,不忽略大小写、不做 Unicode 归一化、不读取原型。普通 Pointer 输入不带外围 JSON 引号。
只反转义一次
转义将 ~ 变成 ~0、/ 变成 ~1。反转义拒绝裸 /、孤立 ~ 和 ~2 等未知序列;先处理 ~1,再处理 ~0,且仅处理一次。因此 ~01 得到字面 ~1,不能继续变成 /。token 操作不转义 JSON 引号,也不解码百分号字节。
严格片段与 Unicode 导出
片段输入只接收片段文本,不接收完整 URL。无效 UTF-8、裸空格、裸非 ASCII 字符和额外裸 # 都会失败。普通结果可保留孤立 UTF-16 代理码元,但片段不可用,原始复制和下载也会禁用以防字符被替换。解析后的 JSON 转义 token 数组及定位后的 JSON 值仍可安全导出;显式生成片段遇到这类码元会报错。
数组位置与只读范围
数组索引必须为 0 或无前导零的十进制数字,且不能越界。- 指向数组末尾之后的不存在位置,无法读取;对象名为 - 的键仍可读取。越过标量继续定位会失败。不提供 JSONPath 查询、应用补丁、创建缺失节点、整树清单、文件导入或 URL 获取。
输入预算与完整输出
每项相关输入最多 500,000 个字符。主结果和参考元数据合计也不得超过 500,000 个字符,虽然导出只包含主结果。单个 token 和普通路径各限 100,000 个字符,最多 1,000 个 token。JSON 深度最多 100,节点最多 50,000,数字 token 最长 1,000 个字符。注释、尾逗号、BOM 与重复键均被拒绝。超限整次失败,过期结果不能导出。

JSON Pointer 常见问题

JSON 指针与 JSONPath 有何不同?

JSON Pointer 精确指向一个位置,按对象键或数组索引逐层定位。JSONPath 可以使用通配符、筛选和递归查询多个节点。本工具只处理 Pointer;它不会把 JSONPath 表达式转换成批量查询。

~0 与 ~1 是什么?

~0 表示字段名中的字面波浪号,~1 表示字面斜杠。例如键 a/b 的地址为 /a~1b。反转义只进行一次,所以 ~01 得到 ~1,而不是 /;单 token 反转义也不接受整条含裸斜杠的路径。

空指针返回什么?

普通形式下的空输入返回整个文档;URI 片段中的 # 也表示根。/ 则选中名称为空字符串的对象属性。生成时,[] 对应根,[""] 对应空键,二者不能互换。

为何我的指针解析失败?

先看失败 token 的序号。可能是键不存在、数组索引越界或不规范、在数组上使用了 -,也可能是越过标量继续访问。解析语法通过不代表定位一定成功;缺失位置不会用 null 冒充有效结果。

JSON Pointer 怎么写?

普通地址以 / 分隔每层 token,例如 /users/0/name。字段名内的 ~ 和 / 分别写成 ~0 和 ~1。也可在生成操作中输入 ["users","0","name"]。普通输入不要附带双引号;如果使用以 # 开头的片段,须明确选择 URI 片段模式。

发现地址的行为不符合预期?

检查下一个地址

使用示例试试 JSON Pointer,比较根与空键的 token,再复制完整选中值,或从自己的 token 生成地址。