跳到正文
马克工具箱

JSONPath 在线测试

输入 JSONPath 表达式,从 JSON 中提取需要的数据,实时查看匹配的值和每个结果的完整路径。适合调试接口测试、Kubernetes、日志处理和低代码平台里用到的 JSONPath。

在浏览器本地运行,输入的内容和文件都不会上传

JSON
结果

使用步骤

  1. 在左侧粘贴 JSON,或保留示例数据。
  2. 在上方输入 JSONPath 表达式,也可以点击下面的常用表达式试试。
  3. 右侧实时显示匹配结果;点「显示路径」可以看到每个结果在文档中的位置。

参数说明

$ 和 @
$ 表示根节点;@ 表示过滤表达式中的当前节点,例如 [?(@.price < 10)]。
. 和 ..
.name 取子节点;..name 递归查找所有层级中名为 name 的节点。
[*]、[0,1]、[-1:]
通配符、多个下标、切片(与 Python 切片相同,负数从末尾数)。
[?(...)]
过滤表达式,支持比较(== != < <= > >=)、逻辑(&& || !)和判断字段是否存在,如 [?(@.isbn)]。

常用表达式

表达式 含义
$.store.book[*].author 所有书的作者
$..price 文档中所有 price
$..book[?(@.price < 10)].title 价格低于 10 的书名
$..book[-1:] 最后一本书
$..book[0,1].title 前两本书的书名
$..book.length 书的数量

常见问题

支持哪种 JSONPath 语法?

使用 jsonpath-plus 实现的 Goessner 语法,这也是 Jayway(Java)、大多数在线工具和接口测试软件采用的写法。它与 2024 年发布的 RFC 9535 在过滤表达式等细节上略有不同。

过滤表达式能执行 JavaScript 吗?

不能。过滤条件在安全模式下求值,只支持属性访问、比较和逻辑运算,不会执行任意代码。

结果为什么总是数组?

一个 JSONPath 表达式可能匹配多个节点,所以结果统一用数组表示;只匹配一个时数组里只有一项。

JSON 会上传吗?

不会。解析和查询都在浏览器中完成。

隐私说明

本工具完全在浏览器中运行,文件和文本都在你的设备上处理,不会上传到我们的服务器。

相关工具