使用 JSONPath 查询 JSON
用 JSONPath 查询 JSON:支持通配符、递归下降、切片以及 [?(@.price < 10)] 这样的过滤表达式,结果随输入实时更新。不是 jq 语法。
$ 表示根;.name 或 ['name'] 选择子节点;[0] 选择数组元素;[*] 选择全部元素;.. 在任意深度搜索;[?(@.price < 10)] 进行过滤;[-1:] 取最后一个元素。
完全在浏览器中运行,您的数据不会被上传。
相关工具
查看全部什么是 JSON 查询(JSONPath)?
JSON 查询工具会对你的 JSON 计算 JSONPath 表达式,并以 JSON 数组的形式显示所有匹配的值。它支持通配符、递归下降、数组切片和过滤表达式。注意:它使用的是 JSONPath 语法($.store.book[*].title),不是 jq 的管道语法。
如何使用 JSON 查询(JSONPath)
- 把 JSON 粘贴到 JSON 输入 框中(或点击某个示例,同时会加载示例数据)。
- 输入 JSONPath 表达式,例如
$..price。 - 在输出中查看匹配的值;标签会显示匹配了多少项。
- 用 复制 复制结果数组。
示例
{"store":{"book":[{"title":"A","price":8},{"title":"B","price":12}]}}
Query: $.store.book[?(@.price < 10)].title [ "A" ]
何时使用 JSON 查询(JSONPath)
适合在使用接受 JSONPath 的工具(API 网关、Kubernetes 的 kubectl -o jsonpath、测试框架、监控)之前测试 JSONPath 表达式。如果需要 jq 的管道、map 或构造对象等功能,请使用 jq 本身,这里不支持。如果只需要一个确切的路径,JSON 路径查找器更简单。
JSON 查询(JSONPath) 的工作原理
查询使用 jsonpath-plus 库(Goessner 的 JSONPath 加扩展)计算。$ 是根,.name 或 ['name'] 选择属性,[0] 选择索引,[*] 选择所有子项,.. 在每一层深度中搜索,[start:end] 对数组切片(负索引从末尾开始计数),[?(…)] 以 @ 表示当前项进行过滤。过滤表达式在 jsonpath-plus 的安全求值器中运行,支持比较和逻辑运算符,但不会执行任意 JavaScript。结果始终是匹配项数组,以 2 空格缩进输出。
常见用例
- 从 API 响应中提取所有价格或 id
- 为 API 测试或监控规则测试 JSONPath
- 按条件过滤数组元素
- 为 kubectl jsonpath 风格的查询做原型验证
安全提示
所有处理都在你的浏览器本地完成,粘贴的内容不会被上传。
常见问题
这是 jq 吗?
不是。它使用的是 JSONPath,这是另一种查询语言。不支持 jq 的管道和函数。
为什么结果总是数组?
一个 JSONPath 表达式可以匹配任意数量的值,所以所有匹配项都会放进数组返回。
我的 JSON 会被发送到服务器吗?
不会,查询在你的浏览器中运行。
这里大数字会丢失精度吗?
会,值按 JavaScript 数字计算,因此超过 2^53 的整数在查询结果中可能被四舍五入。