JSONPath 语法完全指南:从入门到实战
WebTool 团队 · 发布于 2026-09-01 · JSON / JSONPath / 接口调试
JSONPath 是一种用于从 JSON 文档中提取数据的查询语言,地位相当于 XML 的 XPath。 本文用 10 分钟讲清它的全部常用语法,并给出接口调试中的实战例子。读完可以直接在本站 JSONPath 工具中练习。
基本符号
| 语法 | 含义 | 示例 |
|---|---|---|
$ |
根节点(所有表达式必须以此开头) | $ |
.key |
取子键 | $.store.name |
['key'] |
取子键(键名含特殊字符时用) | $['user-name'] |
[0] |
数组下标(从 0 开始) | $.users[0] |
[*] |
数组/对象全部成员 | $.users[*].name |
..key |
递归下降:任意层级找该键 | $..price |
过滤与切片
过滤表达式 [?(...)] 中的 @ 代表当前元素:
$.store.book[?(@.price < 10)] // 价格小于 10 的书
$.users[?(@.age >= 18)].name // 成年用户的名字
数组切片与 Python 一致:
$.items[0:3] // 前 3 个(不含下标 3)
$.items[-1] // 最后一个
实战:调试分页接口
假设接口返回:
{
"code": 0,
"data": {
"list": [
{ "id": 101, "title": "第一篇文章", "author": { "name": "张三" } },
{ "id": 102, "title": "第二篇文章", "author": { "name": "李四" } }
],
"total": 57
}
}
常用提取路径:
| 需求 | 表达式 |
|---|---|
| 所有文章标题 | $.data.list[*].title |
| 所有作者名 | $..name |
| 第一篇的作者 | $.data.list[0].author.name |
| 总数 | $.data.total |
常见错误
- 忘记以 $ 开头 ——
data.list不合法,应为$.data.list。 - 键名含点或横线 —— 用
['key.name']而不是.key.name。 - 过滤里用了 $ —— 过滤表达式内用
@指代当前元素,不是$。
最后更新:2026-09-01