天天看點

jmeter BeanShell PostProcessor 提取json

BeanShell PostProcessor 可對url請求參數、請求傳回的結果進行處理指派等操作;

步驟:

jmeter BeanShell PostProcessor 提取json

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

      

jmeter BeanShell PostProcessor 提取json
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);
}