我正在使用此脚本来更新 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”。
如何解决这个问题?
您的代码中有语法错误,第 18 行必须以分号结尾。
除此之外:
自 JMeter 3.1 起,您应该使用 JSR223 测试元素和 Groovy 语言 进行脚本编写,因此请考虑迁移到 Groovy。更多信息:Beanshell 与 JSR223 与 Java For JMeter:完全对决
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()
}
如果您使用 > 1 个用户运行测试,他们将同时写入同一个文件(竞争条件),这将导致数据损坏或丢失。考虑使用不同的文件名,或者如果不能的话 - 使用不同的文件夹,每个用户一个。