jmeter - 在预处理器中添加具有 int 值的 json 时的 Jmeter 包装器类
问题描述
我正在使用 JSR223preprocessor 添加预处理器。这将创建一个 JSON 对象并获取该 JSON 字符串的 base64,该字符串在正文的 post 请求中与其他 json 元素一起发送。当我使用 jmeter5.3 在 mac 中运行脚本时,使用命令模式和 GUI 没有任何错误,但是当将相同的脚本复制到具有相同版本 JMeter 5.3 的 ubuntu 机器时,我得到一个包装类错误。下面是我使用 setStrictJava (true) 的代码片段;
JsonArray Events = new JsonArray();
JsonArray phoneLocation = new JsonArray();
JsonArray anomalies = new JsonArray();
JsonObject MetaData= new JsonObject();
JsonObject ano= new JsonObject();
JsonObject pl = new JsonObject();
metaData.addProperty("activity","FOOT");
metaData.addProperty("id",UUID.randomUUID().toString());
metaData.addProperty("frequency",100);
metaData.add("phone_location",phoneLocation);
metaData.add("Events",Events);
我从 ubuntu 机器的日志中收到的错误是内部错误:包装器转换中的错误:在第 27 行:在文件中:内联评估:``import com.google.gson.JsonArray; 导入 com.google.gson.JsonObject;进口com。. . . '' : MetaData.addProperty ( "频率" , 100 )。当我将其更改为字符串时,它可以正常工作。
解决方案
查看您的setStringJava
函数调用,您似乎仍在使用 Beanshell,但是从 JMeter 3.1 开始,您应该使用 JSR223 Test Elements 和 Groovy 语言进行脚本编写,所以如果您:
- 将“语言”切换为
groovy
- 删除此
setStrictJava
函数调用
您的代码应该在另一台机器上按预期开始工作(假设您在JMeter Classpath中有这个“gson”库)
同样使用 Groovy,您不需要任何额外的库来处理 JSON,因为Groovy 支持开箱即用地解析和生成 JSON
推荐阅读
- node.js - 带有 NextJS 的 ASP.NET Core 项目
- r - 如何根据一年中的某一天 (DOY) 对多列进行 R 中的每日总和?
- javascript - 不同的活动
- google-bigquery - 如何在 BIGQUERY 中实现 GETBIT 功能
- python - 在列表列表中找到特定列表的次数
- python - Pyspark:根据条件在列的所有值中添加零作为前缀
- javascript - 我的 React App 功能无法在手机上运行
- java - 查询以搜索患者
- javascript - 导入语句在 JavaScript 代码中不起作用
- javascript - 如何防止每次刷新页面时显示 alpine.js 模态