JMeter。从 JSON 请求正文中删除参数

JMeter. Remove parameters from JSON request body

我有以下JSON。如果提供了空字符串,我的目标是 post 参数值为“”(空字符串),如果提供了一些预定义的字符串,例如 "nullValue",则从调用中删除参数。

{
  "Name": "Some Name",
  "AddressLine1": "1st Str.",
  "BuyerIdentifier": "nullValue",
}

我查看了几个问题,但那里提供的预处理器解决方案没有一个对我有用。他们大多提供 removeArgument() 方法。

for (Iterator iterator = sampler.getArguments().iterator();){
    prop = iterator.next();
    String value = prop.getStringValue();
    if (value == "nullValue") {
        sampler.removeArgument(prop.getName());
    }
}

我在下面运行

sampler.getArguments().getArgumentCount()

而它 returns “1”,所以整个 JSON 作为一个参数返回。所以我不能删除个别论点。 谢谢

  1. JSR223 PreProcessor 添加为具有上述正文的请求的子项
  2. 将以下代码放入"Script"区域:

    def oldRequest = new groovy.json.JsonSlurper().parseText(sampler.getArguments().getArgument(0).getValue())
    oldRequest.values().removeAll{it.equals('nullValue')}
    def newRequest = new groovy.json.JsonOutput().toJson(oldRequest)
    sampler.getArguments().removeAllArguments()
    sampler.setPostBodyRaw(true)
    sampler.addNonEncodedArgument('',new groovy.json.JsonOutput().prettyPrint(newRequest),'')
    

假设您的负载有效 JSON 预处理器将删除所有具有 nullValue 值的 JSON 元素。

更多信息: