如何在JMeter中使用JSON Extractor将API响应作为变量传入另一API?
在JMeter中使用JSON Extractor传递API响应变量到另一个API
步骤1:给第一个API请求添加JSON Extractor
右键你的第一个API请求 → 依次选择 添加 → 后置处理器 → JSON Extractor,然后配置核心参数:
- 引用名称:自定义变量名,比如
target_user_id(后续调用全靠这个名字,别写错) - JSON Path表达式:根据API响应的JSON结构编写,比如要提取
data.user.id,就写$.data.user.id($代表JSON根节点) - 匹配数字:填
1(取第一个匹配结果,绝大多数场景适用;如果要提取所有匹配值,填-1,变量会变成数组形式target_user_id_1、target_user_id_2) - 默认值:比如
null或-1(提取失败时返回这个值,方便排查问题)
步骤2:在第二个API请求中调用变量
根据第二个API的需求场景,直接用${引用名称}的格式插入变量:
- URL参数:比如第二个API的URL是
/api/orders?user_id=${target_user_id} - 请求体(JSON格式):示例:
{ "user_id": "${target_user_id}", "status": "active" } - 请求头/其他位置:直接在对应输入框中写入
${target_user_id}即可
实际场景示例
假设第一个API的响应JSON如下:
{
"code": 200,
"data": {
"user": {
"id": 1001,
"username": "pranjal_k"
}
}
}
你需要提取user.id传给第二个API,那么JSON Extractor的配置为:
- 引用名称:
user_id - JSON Path表达式:
$.data.user.id - 匹配数字:
1 - 默认值:
-1
然后第二个API的URL可以写成https://your-api-domain.com/api/user/orders?user_id=${user_id},JMeter会自动把${user_id}替换成提取到的1001。
常见问题排查
- 变量没替换?先检查第一个请求的响应是否符合预期,然后在
查看结果树中切换到JSON Extractor标签,确认是否成功提取到值 - JSON Path报错?用
查看结果树里的JSON Path Tester功能,把响应JSON和表达式放进去测试,验证表达式正确性 - 变量名不生效?JMeter变量名大小写敏感,确保调用时的名称和JSON Extractor里的引用名称完全一致
内容的提问来源于stack exchange,提问作者Pranjal Kulshreshtha
相关产品推荐
相关产品推荐

