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
import org.json.*;
String response_data = prev.getResponseDataAsString(); //url傳回的資料
JSONObject data_obj = new JSONObject(response_data);
String diaryList_str = data_obj.get("data").get("list").toString();
JSONArray diaryList_array = new JSONArray(diaryList_str);
String resultName ="";
for(int i=0;i<diaryList_array.length();i++){
JSONObject diaryList_obj = new JSONObject(diaryList_array.get(i).toString());
String recordItems = diaryList_obj.get("name").toString();
resultName ="resultName"+i;
vars.put(resultName,recordItems);
}
2、采用 import com.alibaba.fastjson.* 進行處理:
使用com.alibaba.fastjson必須引入的包:下載下傳
下載下傳的包放到jmeter目錄下的lib目錄中,記得重新開機jmeter
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
String response_data = prev.getResponseDataAsString(); // //擷取url傳回值
JSONObject data_obj = JSON.parseObject(response_data);
String json=data_obj.get("data").toString();
JSONObject jso=JSON.parseObject(json);//json字元串轉換成jsonobject對象
JSONArray jsarr=jso.getJSONArray("list");//jsonobject對象取得數組
String str2="";
for(int i=0;i<jsarr.size();i++){
JSONObject ao=jsarr.getJSONObject(i);//jsonarray對象通過getjsonobjext(index)方法取得數組裡面的jsonobject對象
String vString=ao.getString("name");//jsonobject對象通過key直接取得String的值
if (vString == null){
vString=ao.getString("username");
}
str2 = "answer_"+i;
vars.put(str2,vString);
}