json提取器参数说明:
json表达式:
提取单个值
Jsonpath | 结果 |
---|---|
$.data.total | 3 |
$..total | 3 |
$..users[0].role | user |
$..uuid | 079BF6BB82AFCFC7084F96AECAF0519F |
$.data.users[0].ext_info.yesapi_points | 0 |
重点
- 如果匹配到多个值(像 $..uuid ),也只能提取到一个值
- 如果想提取匹配到的所有 uuid,可以设置为 -1,结果如下图
利用切片提取单个值
和 Python 切片一样的原理
Jsonpath | 结果 |
---|---|
$..users[2] | 第三个 users |
$..users[-2] | 倒数第二个users |
$..users[0,1] | 前面两个users |
$..users[:2] | 第一、二个users |
$..users[1:2] | 第二个users |
$..users[-2:] | 倒数两个users |
$..users[1:] | 第二个开始的所有users |
提取多个值
- 四种写法类似,选一种方法自己熟记即可
- 重点:提取多个值,提取器的 Match No. 必须填 -1
$.data.users[*].role
提取所有 role 字段值
[*] 表示取数组的所有元素
$..users..role_desc
提取所有 role_desc 字段值
$..reg_time
提取所有 reg_time 字段值
$..[*].username
提取所有 username 字段值
按条件提取值
有时候只需要提取某个特定条件下的参数值
语法格式
[?(expression)]
例子
Jsonpath | 结果 |
---|---|
$..users[?(@.uuid)] | 提取 users 里面包含 uuid 字段的记录 |
$..users[?(@.reg_time > '2020-06-01')] | 提取 reg_time 字段大于 2020-06-01 的记录 |
$..users[?(@.role_desc =~ /.*会员.*?/i)] | 提取 role_desc 字段包含会员的记录 |
$..users[?(@.status == 0)] | 提取 status 字段等于 0 的记录 |
@
代表当前节点,像上面的四例子子,@代表 users 这个列表字段
=~
- 后面跟正则表达式,如果想提取包含指定字符的值,可以使用此正则: /.*指定字符串.*?/i
- i 代表大小写不敏感