Jmeter Groovy替换JSON文件

时间:2018-08-15 17:58:22

标签: groovy jmeter

在具有Groovy的Jmeter JSR223Preprocessor中,我加载如下所示的通用JSON文件xyz:

    {
  "name": "dummy",
  "block1": {
    "var1": 1,
    "var2": {
"value": 1,
  "unit": "Miles",
 },  
    "var3": {
"value": 3,
  "unit": "Seconds",
 },  
  "myList": [{"Id": 0}]
}

我喜欢想出一种优雅的方法,用可配置的值sayconfVal替换var2“ Value”。这有效:

String path = vars.get("basePath")+"xyz.json" ;
xyz = new File(path).getText("UTF-8");
xyz = xyz.replaceAll ('"value": 1', '"value": ${confVal}');

但是我对此不太满意,因为它容易受空格影响,而且我在var3上有另一个Value,有人可能会不小心将1更改为3。所以我喜欢索引到该子var2.Value然后获取Value。 谢谢

1 个答案:

答案 0 :(得分:0)

  1. JSR223 PreProcessor添加为HTTP请求的子代,您需要修改哪个正文
  2. 将以下代码放入“脚本”区域:

    def xyz = new File(vars.get("basePath")+"xyz.json")
    def request = new groovy.json.JsonSlurper().parse(xyz)
    request.block1.var2.value=vars.get('confVal') as int
    xyz.newWriter().withWriter { writer ->
        writer << new groovy.json.JsonBuilder(request).toPrettyString()
    }
    
  3. 就是这样,文件中的值应替换为运行时${confVal}变量中的值。

更多信息: