接口测试 记录在 jmeter 接口测试中 json 返回数值几种特殊正则提取

萧帅 · 2020年06月15日 · 最后由 123 回复于 2021年10月13日 · 2193 次阅读

第一种正则提取
{"code":0,"msg":null,"data":[{"word":"华法林钠片","type":"mix","ids":{"S779":[816,873],"S538":[816,873],"S417":[816,873],"S018":[816,873],"S898":[816,873],"S899":[816,873],"S410":[816,873],"S895":[816,873],"SA33":[816,873],"SA34":[816,873]},"moreDrug":0}]}

提取上面接口返回 json 中的 ids 值作为下一个接口 ids 入参值,百度了很多没有找到相关结果,之前把正则提取想复杂了,所有找不到好的解决方法,后来想想一下我是不是可以直接提取整个 ids 作为下一接口入参值

解决方案:"ids":{(.*?)}

第二种正则提取
{"code":0,"msg":null,"data":[{"word":"华法林钠片","type":"mix","ids":{"S779":[816,873],"S538":[816,873],"S417":[816,873],"S018":[816,873],"S898":[816,873],"S899":[816,873],"S410":[816,873],"S895":[816,873],"SA33":[816,873],"SA34":[816,873]},"moreDrug":0}]}

根据下一接口入参,只需 ids 数组前一个双引号里的值,那该咋整,之间百度过很多资料,也没有类似的案例,也是通过自己一点点摸索出来的,我是小白

解决方案:ids\":{\"(\w+)\"

第三种正则提取

"storeTickets":[
{
"storeNo":"BZLD0002",
"ticketId":35,
"utId":null,
"utStatus":0,
"isAllSickness":0,
"packageId":674,
"type":3,
"title":"宝芝林门店 88 折",
"subTitle":null,
"remark":null,
"code":null,
"qrcode":null,
"rule":null,
"amount":0,
"hasConsumeLimit":0,
"consumeLimit":null,
"miniConsume":0,
"discount":0.89,
"discountTag":null,
"discountAmountLimit":50,
"startTime":1591703230,
"endTime":1625053633,
"createdAt":null,
"availableNum":10,
"limitDrawNum":3,
"limitDayDrawNum":1,
"duration":null,
"expireTime":1625053654,
"ticketTag":"8.9 折券",
"texpireTime":null
},

同时提取 ticketId,packageId 用于下一接口入参,但是由于返回时 ticketId 和 packageId 中间还有 utId,utStatus,isAllSickness 等参数,甚至还有换行空格等,所以去匹配时需要抹掉中间不需要的字段,使用正则:[.\s\S]+? 代表所有的字符,

完整的正则就是:"ticketId":(\d+),[.\s\S]+?"packageId":(\d+)

共收到 6 条回复 时间 点赞

json 提取器他不香吗,jmeter 5.2 后多了一个 jmespath 提取器,他更香!

RhettXia 回复

json 提取器很少用

除非是 xml 或者文本,否则果断 json 提取器啊

2楼 已删除

我想问下题主,如果不用 jmeter,有没有通用软件,能提供像题主举例的参数可以正则匹配出来的

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册