Jmeter提取响应值传参时id数组无引号无法识别为字符串数组如何解决
解决方案
以下两种方案均可解决该问题,按需选择即可:
方案1:直接使用JSON提取器获取符合要求的格式
无需额外转换,一步得到目标格式参数:
- 在返回对应JSON响应的采样器下添加 JSON Extractor
- 按如下规则配置参数:
- Reference Name:自定义变量名,例如
ids - JSON Path Expression:填写
$..id(匹配响应中所有id字段) - Match No.:填写
-1(提取所有匹配结果) - 勾选
Compute concatenation var (suffix _ALL)
- Reference Name:自定义变量名,例如
- 配置完成后提取得到的
${ids_ALL}变量默认就是["T01","T02","T03"]格式的字符串数组,直接填入后续接口的请求体即可使用。
注意:如果你之前是用正则提取器得到的无引号数组,就是因为正则提取时没有捕获字段的双引号,换成JSON提取器可以直接适配JSON字段的类型属性,自动携带字符串的双引号。
方案2:通过JSR223后置处理器转换现有变量
如果不想修改原有提取逻辑,可以新增后置处理器做格式转换:
- 在已经提取到
ids_ALL变量的采样器下添加 JSR223 PostProcessor,脚本语言选择Groovy(JMeter 5.x及以上版本默认支持) - 填入以下脚本:
// 读取原有提取到的无引号数组变量 def rawIdArr = vars.get("ids_ALL") // 为每个数组元素添加双引号,拼接为符合要求的格式 def formattedIdArr = rawIdArr.replaceAll(/([^\[\],\s]+)/, '"$1"') // 将转换后的结果存入新变量,也可直接覆盖原ids_ALL变量 vars.put("formatted_ids", formattedIdArr)
- 后续接口直接引用
${formatted_ids}即可得到符合要求的入参格式。
内容的提问来源于stack exchange,提问作者born2Learn
相关产品推荐
相关产品推荐

