JMeter动态JSON列表生成
我正在使用以下groovy脚本:JMeter动态JSON列表生成,json,list,jmeter,Json,List,Jmeter,我正在使用以下groovy脚本: def oldRequest = new groovy.json.JsonSlurper().parseText(sampler.getArguments().getArgument(0).getValue()) oldRequest.values().removeAll{it.equals('null')} oldRequest.advancedFilters.values().removeAll{it.equals('null')} def newRe
def oldRequest = new groovy.json.JsonSlurper().parseText(sampler.getArguments().getArgument(0).getValue())
oldRequest.values().removeAll{it.equals('null')}
oldRequest.advancedFilters.values().removeAll{it.equals('null')}
def newRequest = new groovy.json.JsonOutput().toJson(oldRequest)
sampler.getArguments().removeAllArguments()
sampler.setPostBodyRaw(true)
sampler.addNonEncodedArgument('',new groovy.json.JsonOutput().prettyPrint(newRequest),'')
要从JSON请求中删除值为“Null”的键,我还想在JSON下面包含转换逻辑:
{
"sortOrder": "A",
"sortField": "policyNumber",
"searchTerritories": [ter1|ter2|ter3],
"pageNumberRequested": "1",
"pageCountRequested": "50",
"policyStatus" : "${ActionStatus}",
"includeTerm : "null",
"advancedFilters": {
"test" : "null",
"test1" : [A|B],
"test1" : [C|D|E]}
}
致:
我希望将输入的JSON值从[ter1 | ter2 | ter3]转换为[“ter1”、“ter2”、“ter3”]并将[A | B][C | D | E]转换为[“A”、“B”][C”、“D”、“E],请帮助我进行所需的groovy脚本修改。您的源数据无效,可以使用I.E 因此,不幸的是,您将无法使用,您必须将源数据视为正常文本,并根据您的需要使用,即 示例代码:
def oldRequest = sampler.getArguments().getArgument(0).getValue()
log.info('Before: ' + oldRequest)
oldRequest = oldRequest.replaceAll('(\\w+)\\|', '"$1",').replaceAll('(\\w+)\\]', '"$1"]').replaceAll("(?m)^.*null.*(?:\\r?\\n)?","")
def matcher = (oldRequest =~ /test\d+/)
def i = 0
while (matcher.find()) {
oldRequest = oldRequest.replaceFirst(matcher.group(0), 'test' + ++i)
}
log.info('After: ' + oldRequest)
sampler.getArguments().removeAllArguments()
sampler.addNonEncodedArgument('', oldRequest, '')
sampler.setPostBodyRaw(true)
演示:
更多信息:
def oldRequest = sampler.getArguments().getArgument(0).getValue()
log.info('Before: ' + oldRequest)
oldRequest = oldRequest.replaceAll('(\\w+)\\|', '"$1",').replaceAll('(\\w+)\\]', '"$1"]').replaceAll("(?m)^.*null.*(?:\\r?\\n)?","")
def matcher = (oldRequest =~ /test\d+/)
def i = 0
while (matcher.find()) {
oldRequest = oldRequest.replaceFirst(matcher.group(0), 'test' + ++i)
}
log.info('After: ' + oldRequest)
sampler.getArguments().removeAllArguments()
sampler.addNonEncodedArgument('', oldRequest, '')
sampler.setPostBodyRaw(true)