需求:提取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遍歷數組與對象
JSONObject和JSONArray的API鏈接:
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"
);
}