在JSON响应中替换字符串的最佳方法是什么?就我而言,我需要用正则表达式提取响应。提取的值保存为savedItems,在保存的项目中,我需要搜索下面的字符串并替换然后再次发布。在2个请求中,首先请求获取然后发送第2个请求(替换字符串)。
我正在尝试在正则表达式提取器中使用BellShell PostProcessor并尝试替换,但它似乎不起作用。
Original string: rate":10.370681}
Replace with this: rate":10.370681,"$rowSelect":false,"$rowState":"invalid":false,"dirty":false,"added":false}
有可能100 - 500被替换所以任何推荐?我仍然是豆壳的新手并尝试使用以下代码,但还没有运气:)
debug();
try {
String savedItems = vars.get("Saved_Item");
String updatedSavedItems = savedItems.replaceAll("rate":10//.370681//}", "rate":10//.370681,"//$rowSelect":false,"//$rowState"://{"invalid":false,"dirty":false,"added":false//}");
vars.put("UPDATED", updatedSavedItems);
}
catch (Throwable ex) {
log.error("Problem in Beanshell", ex);
throw ex;
}
答案 0 :(得分:0)
为什么不查看 jmeter.log 文件?
根据String.replaceAll()方法文档:
请注意,替换字符串中的反斜杠()和美元符号($)可能会导致结果与将其视为文字替换字符串时的结果不同;见Matcher.replaceAll。如果需要,使用Matcher.quoteReplacement(java.lang.String)来抑制这些字符的特殊含义。
所以你需要修改你的替换线并用2个反斜杠来逃避美元符号,如:
String updatedSavedItems = savedItem.replaceAll("rate\":10", " rate\":10.370681,\"\\$rowSelect\":false,\"\\$rowState\":\"invalid\":false,\"dirty\":false,\"added\":false}");
演示:
更多信息:https://www.blazemeter.com/blog/queen-jmeters-built-componentshow-use-beanshell