[{
"id": "55af0d89ba411ff8b8000680",
},{
"id": "55af0d89ba411ff8b80006bc",
"object": {
"id": "55af0d89ba411ff8b80006bd",
}
}]
import org.json.simple.JSONObject;
import org.json.simple.JSONArray;
import org.json.simple.parser.JSONParser;
import java.util.*;
String response = prev.getResponseDataAsString();
JSONParser parser = new JSONParser();
JSONArray GroupList = (JSONArray) parser.parse(response);
Iterator i = GroupList.iterator;
JSONArray GroupIds = new JSONArray();
while (i.hasNext())
{
JSONObject objGroup = (JSONObject) i.next();
GroupIds.push(objGroup.get("id"));
}
vars.putObject("GroupIds",GroupIds);
对于下一个测试元素,我创建了foreach循环控制器来循环groupids
,但是我在日志中看到,它有如下错误:
jmeter.util.BeanShellInterpreter:调用bsh方法时出错:eval源文件:inline evaluation of:``import org.json.simple.jsonObject;导入org.json.simple.jsonArray;导入组织。...'':类型化变量声明:无法访问字段:迭代器,对象:[{“id”:“55AF0D89BA411FF8B8000680”,“名称”:“公司”,“描述”:“公司联系人”,“类型”:“组”,“created_at”:“2015-07-22T03:27:05Z”,“updated_at”:“2015-07-23T02:45:02Z”,“dominant_gender:"unknown”,“average_age”:“?”},{“id”:“55AF0D89BA411FF8B80006BC”,“名称”:“订阅”,“描述”:“订阅”,“类型::subscriptionList”,“average_age”:“?”,“subscription”:{“id”:“55AF0D89BA411FF8B80006BD”,“name”:“subcription 1”,“form_ids”:[“5526430CBA411FF8C30001CD”]}}]
jmeter.extractor.beanshellPostProcessor:BeanShell脚本org.apache.jorphan.util.jmeterException:调用bsh方法时出错:eval源文件:内联计算:``import org.json.simple.jsonObject;导入org.json.simple.jsonArray;导入组织。...'':类型化变量声明:无法访问字段:迭代器,对象:[{“id”:“55AF0D89BA411FF8B8000680”,“名称”:“公司”,“描述”:“公司联系人”,“类型”:“组”,“created_at”:“2015-07-22T03:27:05Z”,“updated_at”:“2015-07-23T02:45:02Z”,“dominant_gender:"unknown”,“average_age”:“?”},{“id”:“55AF0D89BA411FF8B80006BC”,“名称”:“订阅”,“描述”:“订阅”,“类型::subscriptionList”,“average_age”:“?”,“subscription”:{“id”:“55AF0D89BA411FF8B80006BD”,“name”:“subcription 1”,“form_ids”:[“5526430CBA411FF8C30001CD”]}}]
问题出在哪里?
您的代码几乎没有问题:
iterator i=grouplist.iterator;
-需要括号,因为iterator
是方法,而不是字段。groupids.push(objgroup.get(“id”));
-将push
更改为add
,则没有push
方法完整工作代码:
String response = prev.getResponseDataAsString();
JSONParser parser = new JSONParser();
JSONArray GroupList = (JSONArray) parser.parse(response);
Iterator i = GroupList.iterator();
JSONArray GroupIds = new JSONArray();
while (i.hasNext()) {
JSONObject objGroup = (JSONObject) i.next();
GroupIds.add(objGroup.get("id"));
}
vars.putObject("GroupIds", GroupIds);
参见Beanshell vs JSR223 vs Java JMeter脚本:您一直在等待的性能下降!文章提供详细的安装说明、脚本编写技巧和技巧以及不同脚本引擎的性能基准。
更新-为ForEach控制器生成变量:
import org.json.simple.parser.JSONParser;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
String response = prev.getResponseDataAsString();
JSONParser parser = new JSONParser();
JSONArray GroupList = (JSONArray) parser.parse(response);
for (int i = 0; i < GroupList.size(); i++) {
JSONObject objGroup = (JSONObject) GroupList.get(i);
vars.put("Group_" + i, objGroup.get("id"));
}
然后添加一个ForEach控制器,并将其配置为:
如何更正此代码?谢谢
在日志中获取以下错误: 上的方法:getName() 下面是Beanshell后处理器中使用的代码。
我如何使用beanshell后处理器来分析来自每个请求的数据?我需要分析请求,如果请求通过-写入文件,如果请求失败-写入其他文件。任何机构都可以为这种情况编写简单的示例脚本?
问题内容: 有没有办法从一个BeanShell前置/后处理器到另一个BeanShell处理器 (它们在同一个线程组中) 引用变量? 如果我在HTTP Request下的BeanShell PreProcessor中创建一个String变量,那么我可以在同一HTTP Request下的BeanShell PostProcessor中使用或引用该变量。 我尝试通过以下方式访问此变量: + HTTP请求
我需要测试rest api发布JSON。我尝试使用JMeter通过BeanShell后处理器发布Json数据。但是BeanShell后处理器不工作或者我写不出正确的代码。 我的Json是:{“email”:“selin@xxx.com”,“password”:“123”} 你可以在下面的图片中看到我做了什么。
当我呈现视图时,是,因为是我这样插入它。 如果我提交表单,我将执行以下处理程序: 所以基本上我总是要添加一个`stopmessage,不管是成功还是失败。 如何检索设置到另一个处理程序中的属性值?用胸腺嘧啶有可能吗? 注意:暂时,我将设置为控制器类的一个字段,并在处理程序周围设置/not null,以便始终能够看到它的值。这是一个解决办法,但似乎不是正确的做法。因为我是个新手,所以我很乐意听到处理