BeanShell PostProcessor 可对url请求参数、请求返回的结果进行处理赋值等操作;
步骤:
BeanShell PostProcessor 对url 返回的json进行提取:
json的数据格式为:{"data":{"total":5,"list":[{"enabled":true,"lastLoginTime":00,"name":"超级管理员","id":1,"state":"Normal","username":"admin"},{"enabled":true,"lastLoginTime":1,"name":"普通管理员","id":2,"state":"Normal","username":"adminment"},}
1、采用import org.json.* 进行处理:
使用 org.json必须引入的包:下载
下载的包放到jmeter目录下的lib目录中,记得重启jmeter
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 import org.json.*; 2 3 String response_data = prev.getResponseDataAsString(); //url返回的数据 4 5 JSONObject data_obj = new JSONObject(response_data); 6 7 String diaryList_str = data_obj.get("data").get("list").toString(); 8 9 JSONArray diaryList_array = new JSONArray(diaryList_str); 10 11 12 String resultName =""; 13 14 for(int i=0;i<diaryList_array.length();i++){ 15 16 JSONObject diaryList_obj = new JSONObject(diaryList_array.get(i).toString()); 17 18 String recordItems = diaryList_obj.get("name").toString(); 19 20 resultName ="resultName"+i; 21 22 vars.put(resultName,recordItems); 23 24 } 25
2、采用 import com.alibaba.fastjson.* 进行处理:
使用com.alibaba.fastjson必须引入的包:下载
下载的包放到jmeter目录下的lib目录中,记得重启jmeter;
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 import com.alibaba.fastjson.JSON; 2 import com.alibaba.fastjson.JSONArray; 3 import com.alibaba.fastjson.JSONObject; 4 5 String response_data = prev.getResponseDataAsString(); // //获取url返回值 6 JSONObject data_obj = JSON.parseObject(response_data); 7 String json=data_obj.get("data").toString(); 8 JSONObject jso=JSON.parseObject(json);//json字符串转换成jsonobject对象 9 JSONArray jsarr=jso.getJSONArray("list");//jsonobject对象取得数组 10 String str2=""; 11 12 for(int i=0;i<jsarr.size();i++){ 13 JSONObject ao=jsarr.getJSONObject(i);//jsonarray对象通过getjsonobjext(index)方法取得数组里面的jsonobject对象 14 15 String vString=ao.getString("name");//jsonobject对象通过key直接取得String的值 16 if (vString == null){ 17 vString=ao.getString("username"); 18 } 19 20 str2 = "answer_"+i; 21 22 vars.put(str2,vString); 23 }