祈灵工具箱

🗺️JSONPath 在线测试 - JSON 路径查询、过滤表达式与语法速查

JSONPath 是在 JSON 里定位数据的表达式语言,就像 XPath 之于 XML,被 Jayway JsonPath、Kubernetes kubectl -o jsonpath、Postman、JMeter、各种低代码平台和接口测试工具广泛使用。把 JSON 粘贴进来、输入表达式,结果会实时列出每一个匹配的规范化路径(如 $.store.book[2].title)和对应的值,路径可单独复制,全部结果也能一键复制为 JSON 数组。求值器按 RFC 9535 语义手写实现,不使用 eval:支持根节点 $、点号与括号取属性、负数下标、[start:end:step] 切片(含倒序)、通配符 *、递归下降 ..、多选 [a,b],以及过滤表达式 ?(...),里面可以用 == != < <= > >=、&& || !、括号、正则 =~ /…/i、与根节点 $ 的值比较,以及 length()、count()、match()、search() 函数。表达式写错时会指出出错的字符位置。页面下方的语法速查点一下就能试用,方便学习和调试。

免费 · 无需注册 · 浏览器本地处理最后更新:

正在加载工具...

如何使用JSONPath 查询

  1. 1粘贴 JSON 数据(或使用示例)
  2. 2输入 JSONPath 表达式,或点击下方速查里的例子
  3. 3查看匹配的路径和值,复制单条路径或全部结果

常见问题

JSONPath 的过滤表达式怎么写?
过滤写在方括号里,以 ? 开头,@ 代表当前元素,例如 $..book[?(@.price < 10)] 取价格小于 10 的书,$..book[?(@.isbn)] 取有 isbn 字段的书,$..book[?(@.price < 10 && @.category == 'fiction')] 同时满足两个条件。还可以用 || 表示或、! 取反、=~ /正则/i 做匹配,以及用 $.xxx 与根节点上的值比较。
$.. 递归和 * 通配符有什么区别?
* 只取当前层的全部子节点,例如 $.store.* 得到 book 数组和 bicycle 对象;.. 会在任意深度查找,例如 $..price 会找出所有书和自行车的价格。二者可以组合,$..* 表示文档中的每一个节点。
这里的结果和 Jayway / Kubernetes 的 JSONPath 一样吗?
核心语法($、点号、括号、下标、切片、通配、递归、过滤)在各实现中基本一致,本工具按 RFC 9535 标准语义实现,并兼容 Jayway 常用的 .length 和 =~ 正则写法。不同实现在边界情况(如比较不同类型、脚本表达式 (@.length-1))上可能有差异,出于安全考虑本工具不执行任意脚本。
JSON 数据会上传吗?
不会。解析和查询都在浏览器本地完成,过滤表达式由内置的小型解析器求值而不是 eval,接口返回中的敏感数据不会离开你的电脑。