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

时间:2018-01-29 23:14:10

标签: json jmeter preprocessor

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

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

我已经看了几个问题,但是没有为我提供的PreProcessor解决方案。它们主要提供removeArgument()方法。

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

我在下面跑了

sampler.getArguments().getArgumentCount()

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

1 个答案:

答案 0 :(得分:1)

  1. JSR223 PreProcessor添加为具有上述内容的请求的子项
  2. 将以下代码放入"脚本"面积:

    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),'')
    
  3. 假设您的有效负载是有效的JSON,PreProcessor将删除所有具有nullValue值的JSON元素。

    更多信息: