JMeter中如何将响应数组内的取值传递至下一个请求?
提取JSON数组中avatars的id值解决方案
方法1:JSON Extractor(最简便高效)
在返回目标JSON的HTTP请求下添加JSON Extractor,按以下配置填写:
- 引用名称:
avatar_id(后续请求用${avatar_id}调用该变量) - JSON Path表达式:
$.avatars[0].id(明确指定取avatars数组第一个元素的id字段) - 匹配数字:填
1或留空(表示获取第一个匹配结果) - 默认值:可填
-1(提取失败时返回该值,方便排查问题)
添加完成后,可通过Debug Sampler查看avatar_id变量是否成功获取到131。
方法2:JSR223 PostProcessor(灵活可控)
使用Groovy脚本处理响应(Groovy在JMeter中性能最优),脚本内容如下:
import groovy.json.JsonSlurper // 获取前一个请求的响应文本 def responseText = prev.getResponseDataAsString() // 解析JSON def jsonData = new JsonSlurper().parseText(responseText) // 提取avatars数组第一个元素的id def targetId = jsonData.avatars[0].id // 将值存入变量,供后续请求使用 vars.put("avatar_id", targetId.toString())
排查之前提取失败的常见原因
- 处理器位置错误:必须将后置处理器放在返回目标JSON的HTTP请求之后,前置处理器无法获取请求响应
- JSON Path表达式错误:比如未指定数组索引
[0],写成$.avatars.id会导致提取失败 - 正则表达式逻辑错误:若用RegEx Extractor,正确的正则应为
"avatars":\[{"id":(\d+),但JSON结构变化时容易失效,不推荐使用
内容的提问来源于stack exchange,提问作者Snehal Matharu
相关产品推荐
相关产品推荐

