杰米。从JSON请求体中删除参数

杰米。从JSON请求体中删除参数,json,jmeter,preprocessor,Json,Jmeter,Preprocessor,我有以下JSON。我的目标是,如果提供了空字符串,则发布值为“”(空字符串)的参数,如果提供了一些预定义字符串,如“nullValue”,则从调用中删除参数 { "Name": "Some Name", "AddressLine1": "1st Str.", "BuyerIdentifier": "nullValue", } 我已经研究了几个问题,但没有一个预处理器解决方案对我有用。大多数情况下,它们提供removeArgument()方法 我跑到下面 sampler.getArg

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

{
  "Name": "Some Name",
  "AddressLine1": "1st Str.",
  "BuyerIdentifier": "nullValue",
}
我已经研究了几个问题,但没有一个预处理器解决方案对我有用。大多数情况下,它们提供removeArgument()方法

我跑到下面

sampler.getArguments().getArgumentCount()
它返回“1”,因此整个JSON作为一个参数返回。所以我不能删除单个参数。 谢谢

  • 添加为具有上述主体的请求的子级
  • 将以下代码放入“脚本”区域:

  • 假设您的负载是有效的JSON,预处理器将删除所有具有
    nullValue
    作为值的JSON元素

    更多信息:

    sampler.getArguments().getArgumentCount()
    
    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),'')