使用步骤
- 在左侧粘贴 JSON,或保留示例数据。
- 在上方输入 JSONPath 表达式,也可以点击下面的常用表达式试试。
- 右侧实时显示匹配结果;点「显示路径」可以看到每个结果在文档中的位置。
参数说明
- $ 和 @
- $ 表示根节点;@ 表示过滤表达式中的当前节点,例如 [?(@.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 会上传吗?
不会。解析和查询都在浏览器中完成。
隐私说明
本工具完全在浏览器中运行,文件和文本都在你的设备上处理,不会上传到我们的服务器。