JSON 工具

JSONPath 测试同时找到值和它的位置

先试价格筛选示例,再查看每个匹配值及其路径。关闭自动查询后可手动执行。

JSONPath 测试

JSON 输入

JSON 仅在当前浏览器处理;只有主动保存的表达式会存入本地。

匹配结果

规范化路径值

每个值预览最多显示 1,200 个字符;复制与下载包含当前视图的完整结果。

RFC 9535 · jsonpath-rfc9535 1.3.0 · 不执行 JavaScript 表达式

结果已过期,复制、下载与发送暂不可用。

在其他工具中继续

点击后打开新标签页,通过内存传递数据,不写入 URL;传递上限为 500,000 个字符。

接口返回的数据层级一多,同名字段就很难分清来源。JSONPath 测试不仅要告诉你找到什么,还要告诉你它位于哪一条记录。

这里的 JSONPath 在线验证采用单一且明确的规范实现。先比较精确路径与递归路径,再把确认过的 JSONPath 表达式放进实际程序,可以更早发现查询范围过宽的问题。

为什么在这里进行 JSONPath 测试?

匹配值不会丢掉来源

JSONPath 测试为每个值同时显示规范化路径,例如 $['store']['book'][0]。即使两本书的价格完全相同,也能看出它们来自两个不同位置,不会被合并成一项。

数据树中两个选中分支对应右侧的两个匹配值及其路径。

选择后续工具真正需要的数据

发送前先选原始文档或匹配值数组。筛选出的对象可以继续转为 CSV 行;字符串或数字匹配可送往格式化工具。查询结束不会自动跳页,也不会自动传递数据。

完整文档与选中的子集可分别送往格式化文档或表格。

先确认范围,再复用表达式

01

比较精确查询和递归查询

书名示例沿图书数组逐条取字段,$..price 则会同时找到图书和自行车的价格。先查看路径是否属于目标记录,再决定要不要扩大查询范围。

02

选择自动还是手动执行

默认在编辑停止 350 毫秒后运行。关闭自动查询后使用运行按钮或 Ctrl/Cmd+Enter。输入或表达式一变,旧结果立即过期,复制、下载和发送会等待新结果完成。

03

弄清导出的数组形状

值视图始终导出匹配值数组,只有一项也保留外层数组。路径视图导出路径字符串数组。保存按钮只保存表达式,最多 20 条;载入收藏不会替换当前 JSON。

从嵌套数据中选出所需节点

过滤条件使用标准语法

用 $.store.book[?@.price < 10] 筛选低价图书,通过 &&、|| 组合条件。支持标准 length、count、match、search、value 函数。引擎会解析条件,不把输入当作 JavaScript 执行。

多种方式访问节点

JSONPath 查询支持属性名、通配符、递归下降、负索引、切片和多个选择器。相同选择器重复出现可能产生重复匹配,工具保留这些结果,不自动去重或排序。

空结果和空值有区别

没有任何匹配时导出 [];匹配到一个值为 null 的节点时导出 [null]。两者都可以是成功查询。语法错误会单独显示,并阻止导出,不能被误认为空列表。

收藏和预览各有范围

删除收藏先显示将删除的 1 条表达式,再确认应用,并可撤销一次。结果每次显示 50 项,每个值预览最多 1,200 字符;复制和下载始终包含当前视图的完整有效结果。

语法范围与处理边界

只采用一种规范实现
引擎为 jsonpath-rfc9535 1.3.0,基于 RFC 9535。不会自动兼容所有 Jayway、Goessner、kubectl 或 JSONPath Plus 扩展。不接受 jq 管道、JMESPath、自定义函数和脚本表达式。
严格输入与数值限制
拒绝注释、JSON5、尾逗号、重复键、不安全整数和数值溢出。普通小数按 JavaScript 数值处理,输出不保留指数写法、末尾零或负零。长标识符应作为字符串输入,而不是期待任意精度查询。
有上限,不截断导出
输入最多 500,000 字符、深度 100、50,000 节点;表达式最多 2,000 字符,匹配最多 5,000 项,合计输出最多 2,000,000 字符。后台线程超过 2 秒就中止,超限报错,不提供不完整的可下载结果。
查询不改造记录形状
本工具选取已有节点,不修改记录、不分组汇总、不创建新对象。发送 CSV 只接受对象或完全由对象组成的数组,不会把数字或字符串数组自动包装成表格行。
没有隐式保存和远程导入
不提供文件、URL 导入、云端同步或携带数据的分享链接。跨工具通过同源新标签页的内存握手传递,上限 500,000 字符,需要保持来源页开启;保存表达式不会连同文档一起保存。

JSONPath 测试常见问题

支持哪种 JSONPath 方言(dialect)?

JSONPath 测试采用 jsonpath-rfc9535 1.3.0 和 RFC 9535 语法。标准过滤器和函数可用,但早期方言中的脚本表达式、厂商扩展可能需要改写,不能用其他网站是否接受来判断这里的规范范围。

为什么我的表达式没有返回任何结果?

先检查根节点、字段拼写、大小写和数组所在层级。没有匹配会得到 [],它不是语法错误。可逐段缩短表达式,或使用根节点示例确认输入的实际结构,再加回筛选条件。

支持 JSON5、注释或尾逗号吗?

不支持。本页只接收严格 JSON,注释、JSON5、尾逗号和重复对象键都会报错。请在原始数据中修正问题;查询不会偷偷删除注释或用后一个同名键覆盖前一个。

最大支持多大的文件?

本页没有文件上传入口,粘贴输入上限为 500,000 字符,另有深度、节点数、匹配数和输出量限制。复杂表达式还受 2 秒运行预算约束;超过上限应减少输入或缩小查询范围。

JSONPath 和 XPath 有什么区别?

XPath 面向 XML 文档,JSONPath 面向 JSON 的对象、数组和值,两者语法不能直接互换。这里用 $ 表示 JSON 根节点,用属性与索引选择数据,不接受 XPath 的斜杠路径语法。

发现查询结果或语法处理不正确?

试试图书价格筛选

在 JSONPath 测试中比较低价图书与全部价格的结果,核对来源路径后,再选择发送原始文档还是当前匹配值。