JMeter技术问询:如何将字符串值转换为列表用于循环控制器
在JMeter中将字符串形式的列表转为可循环的列表
针对你提取到的["3602","3587"]这类字符串形式的列表,有两种常用方法可以转换为适合循环控制器使用的格式:
方法一:用JSR223元件(Groovy脚本)解析
这是最灵活的方式,适合处理复杂JSON结构:
- 在循环控制器之前添加一个JSR223 PreProcessor或JSR223 Sampler
- 在脚本区域输入以下Groovy代码:
// 获取提取到的字符串变量 def rawListStr = vars.get("AppendixCode_1") // 解析字符串为List对象 def fileList = new groovy.json.JsonSlurper().parseText(rawListStr) // 存储列表长度,用于循环控制器的循环次数 vars.put("FileTotal", fileList.size().toString()) // 逐个存储每个元素,生成File_1、File_2这类变量 fileList.eachWithIndex { code, idx -> vars.put("File_" + (idx + 1), code) }
- 配置循环控制器:将循环次数设置为
${FileTotal} - 在循环控制器内部,使用
${__V(File_${__jm__你的循环控制器名称__idx})}来获取当前循环对应的元素(注意替换你的循环控制器名称为实际名称)
方法二:用正则表达式提取器拆分字符串
如果字符串格式固定,也可以直接用正则提取每个元素:
- 在提取
AppendixCode_1的取样器之后,添加正则表达式提取器 - 配置参数:
- 引用名称:
FileCode - 正则表达式:
"(\d+)" - 模板:
$1$ - 匹配数字:
-1(表示提取所有匹配项)
- 引用名称:
- 配置完成后,JMeter会生成
FileCode_1=3602、FileCode_2=3587和FileCode_matchNr=2这些变量 - 循环控制器的循环次数设置为
${FileCode_matchNr},内部用${__V(FileCode_${__jm__你的循环控制器名称__idx})}获取当前元素
内容的提问来源于stack exchange,提问作者Dotan
相关产品推荐
相关产品推荐

