首页 > 解决方案 > 如果为空值,则在 jmeter 中删除 json 参数

问题描述

我有如下请求,我将从csv文件中传递动态值

"input":[
                {
                    "apiName":"Department",
                    "apiValue":["SUPPORT"],
                    "type":"MultiCheckBox",
                    "contains":false
                },
                {
                    "apiName":"Email",
                    "apiValue":[""],
                    "type":"email",
                    "contains":true
                }            
        ],

对于电子邮件的上述api值为null,因此在运行请求之前请求应该低于,它应该删除null

{
                    "apiName":"Department",
                    "apiValue":["SUPPORT"],
                    "type":"MultiCheckBox",
                    "contains":false
                } 

标签: jmeter

解决方案


  1. 添加JSR223 PreProcessor作为您要参数化的请求的子项

  2. 将以下代码放入“脚本”区域:

    sampler.getArguments().getArgument(0).value = new groovy.json.JsonBuilder(new groovy.json.JsonSlurper().parseText(sampler.getArguments().getArgument(0).getValue()).input.findAll {item -> item.get('apiValue').get(0) != ''}).toPrettyString()
    
  3. 就是这样,预处理器将“扫描”请求有效负载并删除所有apiValue未即时设置的 JSON 对象:

    在此处输入图像描述

更多信息:


推荐阅读