我们通过实际栗子去讲述理论知识点
字段 | 结果 |
---|---|
Apply to | 应用范围,选默认的 main sample only 就行了 |
Names of created variables | 接收提取值的变量名 多个变量用 ; 分隔 必传 |
JSON Path expression | json path 表达式,用来提取某个值 多个表达式用 ; 分隔 必传 |
Match No.(0 for Random) | 取第几个值,多个值用 ; 分隔 0:随机,默认 -1:所有 1:第一个值 非必传 |
Compute concatenation var(suffix_ALL) | 如果匹配到多个值,则将它们都连接起来,不同值之间用 , 分隔 变量会自动命名为 <variable name>_ALL |
Default Values | 缺省值,匹配不到值的时候取该值,可写error 多个值用 ; 分隔 非必传 |
;
JSON Path expression
;
Match No.(0 for Random)
;
Compute concatenation var(suffix_ALL)
,
<variable name>_ALL Default Values
;
这个栗子,我都会以这个地址的接口来完成 JSON 提取器的实战栗子,大家可以注册个账号玩一玩哦
http://api.yesapi.cn/docs.php?keyword=%E4%BC%9A%E5%91%98&channel=api
下面多个栗子都以这个测试计划为基础哦
登录是执行其他接口的前置接口,所以要获取用户登录后的 token、uuid
相对路径的方式
绝对路径的方式
${var}
这也是某个接口返回的响应内容,后面的栗子也是以这个 JSON 字符串为基础来提取各种值
感兴趣也可以自己玩一玩:http://api.yesapi.cn/docs-api-App.User.GetList.html
{
"ret": 200,
"msg": "V2.5.1 YesApi App.User.GetList",
"data": {
"total": 3,
"err_msg": "",
"err_code": 0,
"users": [
{
"role": "user",
"status_desc": "正常",
"reg_time": "2020-06-22 15:19:51",
"role_desc": "普通会员",
"ext_info": {
"yesapi_nickname": "",
"yesapi_points": 0
},
"uuid": "6D5EDCB459F0917A98106E07D5438C58",
"username": "fangjieyaossb",
"status": 0
},
{
"role": "user",
"status_desc": "正常",
"reg_time": "2020-06-22 14:27:17",
"role_desc": "普通会员",
"ext_info": {
"yesapi_nickname": "",
"yesapi_points": 0
},
"uuid": "0164DC0680F84DCE40D3DD4A36640ECA",
"username": "fangjieyaossa",
"status": 0
},
{
"role": "admin",
"status_desc": "正常",
"reg_time": "2020-03-23 22:48:32",
"role_desc": "管理员",
"ext_info": {
"yesapi_nickname": "",
"yesapi_points": 0
},
"uuid": "079BF6BB82AFCFC7084F96AECAF0519F",
"username": "fangjieyaoss",
"status": 0
}
]
}
}
Jsonpath | 结果 |
---|---|
$.data.total | 2 |
$..total | 2 |
$..users[0].role | user |
$..uuid | 079BF6BB82AFCFC7084F96AECAF0519F |
$.data.users[0].ext_info.yesapi_points | 0 |
$..uuid
还会告诉你匹配了多少个值 {uuid} 而是 {uuid_2}
和 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.
提取所有 role 字段值
[*] 表示取数组的所有元素
提取所有 role_desc 字段值
提取所有 reg_time 字段值
提取所有 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
提取 users 第一条记录的 uuid、username 字段的值
$..users[0].['uuid','username']
new_1={"uuid":"6D5EDCB459F0917A98106E07D5438C58","username":"luojunjiessb"}
uuid_1=6D5EDCB459F0917A98106E07D5438C58
uuid_2=0164DC0680F84DCE40D3DD4A36640ECA
uuid_3=079BF6BB82AFCFC7084F96AECAF0519F
uuid_ALL=6D5EDCB459F0917A98106E07D5438C58,0164DC0680F84DCE40D3DD4A36640ECA,079BF6BB82AFCFC7084F96AECAF0519F
uuid_matchNr=3
uuid1_1=6D5EDCB459F0917A98106E07D5438C58
uuid1_2=0164DC0680F84DCE40D3DD4A36640ECA
uuid1_3=079BF6BB82AFCFC7084F96AECAF0519F
uuid1_matchNr=3
uuid2_1=6D5EDCB459F0917A98106E07D5438C58
uuid2_2=0164DC0680F84DCE40D3DD4A36640ECA
uuid2_3=079BF6BB82AFCFC7084F96AECAF0519F
uuid2_matchNr=3
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有