在测试过程中遇到这样的一个JSON数据,在这里插入代码片
"[{\"model\": \"mysite.event\", \"pk\": 1, \"fields\": "
+ "{\"name\": \"节目一\", \"limit\": 23, \"status\": true, \"address\": \"北京\", \"start_time\": \"2019-10-10T10:10:10\", \"end_time\": \"2020-11-07T17:24:04.767\"}}, "
+ "{\"model\": \"mysite.event\", \"pk\": 2, \"fields\": "
+ "{\"name\": \"节目二\", \"limit\": 23, \"status\": false, \"address\": \"上海\", \"start_time\": \"2019-10-10T10:10:10\", \"end_time\": \"2020-11-07T17:29:20.199\"}},"
+ " {\"model\": \"mysite.event\", \"pk\": 3, \"fields\":"
+ " {\"name\": \" 节目三 \", \"limit\": 1, \"status\": true, \"address\": \"深圳\", \"start_time\": \"2020-10-10T10:10:00\", \"end_time\": \"2020-11-07T18:36:03.289\"}}]";
本想在Beanshell中直接写代码处理,但是总是报错,处理不了,无奈只有直接在eclipse中编写代码,利用fastjson解析JSON数据:
package test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.net.URLDecoder;
import net.sf.json.JSONObject;
import net.sf.json.JSONArray;
public class GetJsonData {
public static String[] getInfo(String httpResult) throws Exception {
httpResult=URLDecoder.decode(httpResult ,"UTF-8");
List<String> list = Arrays.asList(httpResult); //将String转换成List
JSONArray getJsonArray = JSONArray.fromObject(list); //将list转换为JSONArray对象
int j=getJsonArray.getJSONArray(0).size();
String[] arr = new String[j];
for(int i=0;i<j;i++) {
JSONObject getJsonObj = (JSONObject) getJsonArray.getJSONArray(0).get(i);
JSONObject cc= (JSONObject) getJsonObj .get("fields");
System.out.println(cc.get("address"));
arr[i]=cc.get("address").toString();
}
System.out.println(arr);
return arr;
}
}
然后把这个打成jar包,如下图所示:
JMeter直接引用该jar包,如下图所示:
也可以把jar包直接放在lib/ext文件下,然后重启JMeter。
在后置处理器中使用该jar的函数,从而获取JSON数据,如下图所示:
import test.GetJsonData;
String jsonData = prev.getResponseDataAsString();
GetJsonData getJsonObj= new GetJsonData();
String [] jsonArray = getJsonObj.getInfo(jsonData );
int i=0;
for (String x : s) {
String key="name"+ i;
vars.put(key,x);
i++;
}