Jmeter Groovy替换JSON文件

Jmeter Groovy替换JSON文件,groovy,jmeter,Groovy,Jmeter,在带Groovy的Jmeter JSR223预处理器中,我加载一个通用JSON文件xyz,如下所示: { "name": "dummy", "block1": { "var1": 1, "var2": { "value": 1, "unit": "Miles", }, "var3": { "value": 3, "unit": "Seconds", }, "myList": [{"Id": 0}] } 我喜欢想出一种优雅的方法,用

在带Groovy的Jmeter JSR223预处理器中,我加载一个通用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上有另一个值,有人可能会意外地将1更改为3。所以我喜欢索引到子var2.Value,然后获取Value。 多谢各位

  • 作为HTTP请求的子项添加需要修改的主体
  • 将以下代码放入“脚本”区域:

    def xyz=新文件(vars.get(“basePath”)+“xyz.json”)
    def request=new groovy.json.JsonSlurper().parse(xyz)
    request.block1.var2.value=vars.get('confVal')作为int
    xyz.newWriter().withWriter{writer->
    作家
    
    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()
    }