使用sampler.getArguments().getArgumentsAsMap()读取参数时出现空键值对 - JMeter JSR223预处理器
JMeter form-data请求读取参数出现空键值对问题
在发送Content-Type为form-data的HTTP请求时,已在JMeter的参数标签中添加参数值,但通过JSR223预处理器使用sampler.getArguments().getArgumentsAsMap()读取参数时,返回的Map末尾会多出一个空的键值对{"":""}。
代码示例
jsonPayload = JsonOutput.toJson(sampler.getArguments().getArgumentsAsMap()) log.info("Arguments as Map" + jsonPayload)
执行结果
2022-12-23 12:40:49,347 INFO o.a.j.m.J.Encrypt Payload: Arguments as Map{"Name":"test1","ID1":"test2","tID2":"test3","ID3":"test4","":""}
解决方法
- 检查参数配置:打开HTTP请求的「参数」标签,确认是否存在未删除的空行或空参数。JMeter会保存空的参数条目,即使未填写键值内容。
- 过滤空键值对:在代码层面对Map进行过滤,直接移除键为空字符串的条目:
def argsMap = sampler.getArguments().getArgumentsAsMap() argsMap.remove("") def jsonPayload = JsonOutput.toJson(argsMap) log.info("Arguments as Map" + jsonPayload)
- 改用Form Data专用方法:对于
form-data请求,建议分别获取普通参数和文件参数再组合,避免空条目混入:
def argsMap = [:] // 添加普通参数 sampler.getParameters().each { param -> argsMap[param.getName()] = param.getValue() } // 添加文件参数(如果有) sampler.getFiles().each { fileParam -> argsMap[fileParam.getParamName()] = fileParam.getFileName() } def jsonPayload = JsonOutput.toJson(argsMap) log.info("Arguments as Map" + jsonPayload)
内容的提问来源于stack exchange,提问作者Mani Maran
相关产品推荐
相关产品推荐

