JMeter后置处理器处理空值时upto方法报错求助
问题解决步骤
1. 修正JSON提取器配置
确保JSON提取器的匹配数字设置为-1,这样当studies数组为空时,提取器会自动生成${变量名_matchNr}=0的标识,为后续判断提供依据。
2. 修复JSR223后置处理器脚本
错误根源是当数组为空时,提取到的匹配数为0,但原脚本直接执行1.upto(0)导致参数异常。修改为带前置判断的逻辑:
// 获取匹配结果总数 def matchTotal = vars.get("uuid_matchNr") as int // 仅当有匹配结果时执行循环 if (matchTotal > 0) { 1.upto(matchTotal) { idx -> def targetUuid = vars.get("uuid_${idx}") // 这里添加你的UUID处理逻辑,比如存入变量或打印日志 log.info("提取到UUID:${targetUuid}") } } else { // 数组为空时的处理逻辑,可根据需求调整 log.info("当前响应的studies数组为空,未找到目标UUID") // 可选:设置默认值避免后续步骤报错 vars.put("uuid", "") }
3. 可选优化:直接用JSONPath处理空数组
若使用JMeter 5.0+版本,可直接修改JSONPath表达式,为空数组返回默认值,无需脚本处理:
$.studies[?(@.account_name=='${studyNameOfTheAccount}')].uuid | ['']
当数组为空时,提取器会返回空字符串,避免后续因变量缺失报错。
关键注意事项
- 确保变量名与JSON提取器中定义的一致,比如提取器变量名为
studyUuid,则需用${studyUuid_matchNr}获取匹配数。 - JSR223脚本中优先使用
vars.get()获取变量,避免直接写${变量名}导致编译前替换空值引发的类型错误。
内容的提问来源于stack exchange,提问作者Jyoti Prakash Mallick
相关产品推荐
相关产品推荐

