jsonpath语法
介绍:JSONPath 专门用于从 JSON 数据中提取指定内容,类比 XML 中的 XPath。
一、示例数据
1 | { |
二、JSONPath 核心语法详解
1. 基础选择器
| JSONPath 语法 | 说明 | 示例 | 示例结果 |
|---|---|---|---|
$ |
根节点(JSON 数据的最顶层,所有路径都从 $ 开始) |
$ |
整个 JSON 数据 |
. |
访问子节点(直接子级,层级之间用 . 分隔) |
$.code |
200 |
.. |
递归下降(访问所有层级的匹配节点,层级深度不限) | $..name |
[“张三”, “李四”] |
[] |
访问数组元素(数组索引、筛选条件都放在 [] 中) |
$.data.users[0] |
id=1001的完整对象 |
* |
通配符(匹配所有同级节点,可用于对象、数组) | $.data.users[*].age |
[28, 25] |
@ |
筛选条件中引用当前节点(仅在 [] 内的过滤表达式中使用) |
$.data.users[?(@.age>26)] |
年龄大于26的用户(仅张三对象) |
2. 数组操作
JSON 数组是接口返回的常见格式,重点掌握以下操作:
(1)按索引取值
- 数组索引从
0开始 - 支持负数索引(
-1表示最后一个元素,-2表示倒数第二个,以此类推)
示例:
1 | $.data.users[1] // 取第二个用户(李四) |
(2)数组切片
语法:[start:end:step](end 对应的元素不包含)
示例:
1 | $.data.users[0:1] // 取索引 0 到 1(不包含1),即第一个用户 |
(3)条件过滤(按属性值筛选数组元素)
语法:[?(@.属性名 操作符 数值/字符串)]
支持的操作符:
- 比较操作符:
==、!=、>、<、>=、<= - 逻辑操作符(多条件):
&&(且)、||(或) - 存在性判断:
@.属性名(判断当前节点是否包含该属性)
示例:
1 | // 1. 筛选年龄大于26的用户 |
3. 其他常用
| 语法 | 说明 | 示例 | 结果 |
() |
表达式分组(优先级控制,多条件时常用) | `$..users[?((@.age>25) | |
['属性名'] |
替代 . 访问子节点(适合属性名包含特殊字符,如空格、横杠) |
$['data']['users'][0]['name'] |
张三(和 $.data.users[0].name 效果一致) |