Jmeter BeanShell PostProcessor提取json數據


需求:提取sample返回json數據中所有name字段值,返回的json格式如下: 
{“body”:{“apps”:[{“name”:”111”},{“name”:”222”}]}} 
jmeter中添加后置處理器BeanShell PostProcessor 
這里寫圖片描述 
這里寫圖片描述

 

import org.json.*;

String response_data = prev.getResponseDataAsString(); JSONObject data_obj = new JSONObject(response_data); String apps_str = data_obj.get("body").get("apps").toString(); JSONArray apps_array = new JSONArray(apps_str); String[] result = new String[apps_array.length()]; for(int i=0;i<apps_array.length();i++){ JSONObject app_obj = new JSONObject(apps_array.get(i).toString()); String name = app_obj.get("name").toString(); result[i] = name; } vars.put("result", Arrays.toString(result));


JSONObject和JSONArray遍歷數組與對象

 

1、識別json格式字符串是JSONObject還是JSONArray

JSON數據格式只有兩種形式,分別是:

{ "key" "value" //JSONObject(對象)
[{ "key1" "value1" }, { "key2" "value2" }]  //JSONArray(數組)

JSONObject可以用key取值,JSONArray只能遍歷取值

2、遍歷json數組

假設我們得到的json字符串result如下:

{
    "feature" : "fresh_today" ,
    "photos" :[
       {
          "id" : 40581634 ,
          "name" : "Dandelion 5"
       },
       {
          "id" : 40581608 ,
          "name" : "Dandelion 3"
       }
    ]
}

可以看出來,最外面是個json對象,photos節點是個數組,遍歷代碼如下:

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
 
JSONObject jsonObject = JSONObject.fromObject(result);
String feature = jsonObject.getString( "feature" );
JSONArray photoArray = jsonObject.getJSONArray( "photos" );
for ( int i =  0 ; i < photoArray.size(); i++) {
     JSONObject object = (JSONObject) photoArray.get(i);
     int id = object.getInt( "id" );
     String name = object.getString( "name" );
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM