JSONPath 教程:$ 根节点、点号和下标、[*] 通配、.. 递归、切片和 ?() 过滤
一句话答案
JSONPath 用 $ 表示根节点,$.store.book[0].title 取第一本书名,$..price 递归取出所有 price,$.store.book[?(@.price<10)].title 筛选价格低于 10 的书名。把 JSON 和表达式粘贴到在线测试工具,可以实时看到匹配结果。
JSONPath 是在 JSON 里定位和提取数据的查询语法,常用于接口测试、日志分析和数据处理。
语法速查
| 写法 | 含义 |
|---|---|
$ | 根节点 |
.key 或 ['key'] | 取子节点 |
[0] | 数组第 1 个元素(下标从 0 开始) |
[*] | 所有元素 |
..key | 递归查找所有层级的 key |
[0:2] | 切片,取下标 0 和 1 |
[?(@.price<10)] | 过滤,@ 表示当前元素 |
示例数据
下面用在线工具自带的书店示例数据:store 里有 book 数组(A 价格 8、B 价格 12、C 价格 5)和一辆 bike(价格 19)。
| 表达式 | 结果 |
|---|---|
$.store.book[0].title | "A" |
$.store.book[*].title | "A"、"B"、"C" |
$..price | 8、12、5、19 |
$.store.book[0:2].title | "A"、"B" |
$.store.book[?(@.price<10)].title | "A"、"C" |
注意 $..price 会把 bike 的价格也找出来,因为递归查找不区分层级。
在线测试
- 粘贴 JSON:打开 JSONPath 在线测试,在 JSON 框里粘贴数据,也可以先用自带的示例。
- 输入表达式:在 JSONPath 框里输入表达式,例如
$.store.book[?(@.price<10)].title。 - 看结果:下方实时显示匹配到的结果和数量,表达式写错时会提示。

🧭 JSONPath 在线测试
免费在线使用,文件和数据只在你的浏览器本地处理,无需注册。
写表达式的小技巧
- 先粗后细:先用
$..key确认字段存在,再写精确路径; - 键名有特殊字符:用
['key-name']方括号写法; - 过滤条件:比较数字时不加引号,比较字符串时加引号;
- 不同实现有差异:各种编程语言的 JSONPath 库在过滤语法、结果顺序上可能略有不同,以实际使用的库为准;
- JSON 本身有格式错误时先用 JSON 格式化 检查。
数据结构的校验可以用 JSON Schema。
常见问题
$ 和 @ 有什么区别?
$ 表示整个 JSON 的根节点,@ 在过滤表达式里表示正在判断的当前元素。
.. 是什么意思?
递归下降,在所有层级里查找指定的键,例如 $..price 取出所有 price。
数组下标从几开始?
从 0 开始,[0] 是第一个元素。
数据会上传吗?
不会,JSONPath 测试完全在浏览器本地运行。
本文用到的工具
相关教程
🧾
JSON 格式化教程
接口返回的 JSON 挤成一行看不清?教你在线格式化、压缩和校验 JSON,读懂报错位置,并整理尾随逗号、单引号、注释…
✅
JSON Schema 校验教程
JSON Schema 怎么校验接口数据?讲清 type、required、properties、items、enum、minLength…
🧪
正则表达式入门
写给新手的正则表达式入门:元字符、字符类、量词、分组和锚点的含义,手机号、邮箱、日期等常用正则示例,贪婪与非贪婪的区别…
🔳
二维码加 Logo 教程
在线生成带 Logo 的美化二维码:码点和码眼样式、渐变色、透明背景怎么设置,容错级别选 H 的原因,Logo 多大不影响扫码…