如何在 BeanShell 中解决这个问题?

问题描述 投票:0回答:1

我正在使用此脚本来更新 JSON 文件中的值

`导入 org.json.simple.JSONObject; 导入 org.json.simple.parser.JSONParser; 导入 org.apache.commons.io.FileUtils;

尝试{

String filePath = "blob";
File file = new File(filePath);
String jsonContent = FileUtils.readFileToString(file, "UTF-8");


JSONParser parser = new JSONParser();
JSONObject jsonObject = (JSONObject) parser.parse(jsonContent);

String extractedValue1 = vars.get("CASE_TYPE_ID");
jsonObject.get("caseType").put("id",extractedValue1);
String extractedValue2 = vars.get("CASE_CONFIG_ID");
jsonObject.put("caseConfigId", extractedValue2)

FileUtils.writeStringToFile(file, jsonObject.toJSONString(), "UTF-8");

} catch (异常 e) {

log.error("Error updating JSON file: " + e.getMessage());
}`

当我运行脚本时,我收到此错误

在文件中:内联评估:``import org.json.simple.JSONObject;导入 org.json.simple.parser.JSONParser;小鬼。 。 。 '' 在第 20 行第 5 列遇到“FileUtils”。

如何解决这个问题?

testing jmeter jar jmx beanshell
1个回答
0
投票

您的代码中有语法错误,第 18 行必须以分号结尾。


除此之外:

  1. 自 JMeter 3.1 起,您应该使用 JSR223 测试元素和 Groovy 语言 进行脚本编写,因此请考虑迁移到 Groovy。更多信息:Beanshell 与 JSR223 与 Java For JMeter:完全对决

  2. Groovy 具有内置的 JSON 支持,因此您无需使用第 3 方库。您可以使用示例代码:

    def original = new groovy.json.JsonSlurper().parse(new File('blob'))
    original.caseType = vars.get('CASE_TYPE_ID')
    original.caseConfigId = vars.get('CASE_CONFIG_ID')
    
    new File('blob').withWriter { writer ->
        writer << new groovy.json.JsonBuilder(original).toPrettyString()
    }
    
  3. 如果您使用 > 1 个用户运行测试,他们将同时写入同一个文件(竞争条件),这将导致数据损坏或丢失。考虑使用不同的文件名,或者如果不能的话 - 使用不同的文件夹,每个用户一个。

© www.soinside.com 2019 - 2024. All rights reserved.