Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JMeter动态JSON列表生成_Json_List_Jmeter - Fatal编程技术网

JMeter动态JSON列表生成

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

我正在使用以下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 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)
演示:

更多信息:


感谢您的回复。感谢您的回复。您能否建议一种使用CSV数据集配置将动态列表发送到HTTP请求的方法。例如,将值[“A”、“B”]或[“A”、“B”、“C”]从CSV发送到同一个键中,我还希望使用相同的CSV文件进行DB断言。因此,应该为HTTP和JDBC请求输入相同的CSV文件,请建议您可以想到的任何解决方案。
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)