这是一个老问题,但我一直在努力解决这个问题,这是我的解决方案。在这里问的情况
{"id":"blah id", "name":"blah name"}
您可以使用 JSON Extractor Post-processor 解决它。根据我的经验,我无法使用两个后处理器。
这是用于获取 id 和 name 的后处理器:
在您编写的 JSON 路径表达式中:
$.["id", "name"]
然后 testVar2 将具有值(来自调试采样器):
testVar2_1={"name":"blah name","id":"blah id"}
testVar2_matchNr=1
但是我无法使用 JSON Extractor 后处理器来处理 json 响应,例如:
{"id":"blah id", "other" : {"name":"blah name"}}
在这种情况下,我必须使用 BeanShell PostProcessor 和这样的脚本:
import net.minidev.json.parser.JSONParser;
import net.minidev.json.JSONObject;
import net.minidev.json.JSONArray;
JSONParser p = new JSONParser(JSONParser.MODE_PERMISSIVE);
String jsonString = prev.getResponseDataAsString();
JSONObject jsonObj = (JSONObject) p.parse(jsonString);
String idString = (String) jsonObj.get("id");
JSONObject otherJSONObject = jsonObj.get("other");
String nameString = (String) otherJSONObject.get("name");
log.info("ID:" + idString);
log.info("NAME:" + nameString);
vars.put("IDVAR", idString);
vars.put("NAMEVAR", nameString);