【问题标题】:how to replace strings in json response and send it jmeter如何替换json响应中的字符串并将其发送给jmeter
【发布时间】:2016-10-14 00:32:19
【问题描述】:

在 JSON 响应中替换字符串的最佳方法是什么?就我而言,我需要使用正则表达式提取响应。提取的值保存为 savedItems 并在保存的项目中,我需要搜索下面的字符串并替换然后再次发布。在 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 个要更换,有什么建议吗?我还是 beanshell 的新手,用下面的代码尝试过,但还没有运气:)

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;
 }

【问题讨论】:

    标签: json regex jmeter beanshell


    【解决方案1】:

    您为什么不查看 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-23
      • 2016-05-22
      • 1970-01-01
      相关资源
      最近更新 更多