jmeter如何提取json数据作为其他的接⼝⼊参
在我们实际的业务请求中,服务器响应⽤户请求的数据格式为JSON,然⽽我们通常需要提取接⼝A的响应值作为接⼝B的⼊参;那么在实际的应⽤中,从json响应值取得这个参数作为下⼀下接⼝的⼊参数呢?⽐如对于⽤户这个请求,
/communicator/app/share/getSharelist246.action?sessionId=5DE154A0AAFC0323D4BF090D32674DEC&page=1&rows=2
服务器端响应如下图所⽰:
响应结果
正则表达式获取括号内容
此时我们需要提取这个响应结果中的picUrl的值作为其他接⼝的⼊参数,我们应该如何做呢?在Jmeter⼯具中⽅法有三:
⼀、正则表达式:
点击右键-添加正则表达式,
引⽤名称:填写提取值的变量名(即在Jmeter⼯具需要使⽤的变量名称);
正则表达式处:提取内容的正则表达式;  ()表⽰提取,对于你要提取的内容需要⽤⼩括号括起来。
模板:⽤$$引⽤起来,如果在正则表达式中有多个提取表达式(多个括号括起来的部分),则可以是$1$,$2$等等,表⽰解析到的第⼏个值给picUrl,正则表达式的提取模式,值从1开始,值0对应的是整个匹配的表达式。匹配数字(0代表随机):0代表随机,-1代表所有,其余正整数代表将在已提取的内容中第⼏个匹配的内容。这⾥需要提取的是第⼆个匹配的值。缺省值:正则匹配失败时取的值。
在Sampler上⾯添加后置处理器-->jp@gc - JSON Path Extractor,
JSON Path Extractor
⽅法三:使⽤BeanShell PostProcessor元件提取
TIPS1.在使⽤这个元件提取时,⾸先需要将fastjson.jar⼯具包中拷贝到 jmeter lib ⽂件夹下后,然后重启 jmeter在Sampler上⾯添加后置处理器-->BeanShell PostProcessor
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;    //引⼊ fastjson.jar包
String ResponseDataAsString();  //将⽤户的请求返回值转换成String存储在json变量中
JSONObject jso = JSON.parseObject(json);    //将json字符串转换成⼀个Object对象存储在jso中
JSONArray datas = JSONArray("rows");  //从 jso对象中获取获取⾄rows列表存放在datas中
vars.put("picUrl",JSONObject(0).getString("picUrl")); 从列表中获取第⼀个对象的的 picUrl值,存放在Jmtere变量picUrl中
使⽤ BeanShell PostProcessor提取json值

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。