You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JMeter中存储JSON响应ID列表并依次传入HTTP请求

如何从JSON响应提取书籍ID并依次传入多个HTTP请求?

问题背景

我拿到如下JSON响应:

[
{
"firstName": "William",
"lastName":"Shakespeare",
"Title": "Mr",
"id": "1",
"books": [
{
"id": "WS1",
"title": "King John",
"year":"1596"
},
{
"id": "WS2",
"title": "Julius Caesar",
"year": "1599"
},
{
"id": "WS3",
"title": "Romeo and Juliet",
"year": "1595"
}
],
"Nationality": "English"
}
]

这个响应里包含3个书籍ID,我需要把它们存成列表,再依次传入3个独立的HTTP请求中。请问怎么用后置处理器实现这个需求?


JMeter实现方案

1. 用JSON Extractor提取所有书籍ID

在返回上述JSON的请求下,添加JSON Extractor后置处理器,配置如下:

  • 应用范围:当前请求
  • 引用名称:bookIds
  • JSON Path表达式:$[0].books[*].id
  • 匹配数字:-1(表示提取所有匹配的ID)
  • 默认值:可填NOT_FOUND(可选)

配置完成后,JMeter会自动生成一组变量:

  • bookIds_1=WS1、bookIds_2=WS2、bookIds_3=WS3
  • bookIds_matchNr=3(存储提取到的ID总数)

2. 用循环控制器遍历ID

添加循环控制器,设置循环次数为${bookIds_matchNr},这样控制器会根据提取到的ID数量自动执行对应次数。

3. 在HTTP请求中引用当前ID

在循环控制器下添加需要执行的HTTP请求,在需要传入书籍ID的位置(比如URL路径、请求体参数),使用变量${bookIds_${__counter(TRUE,)}}:

  • __counter(TRUE,)会在每次循环时生成递增的数字(1、2、3),和bookIds_拼接后就能依次取出WS1、WS2、WS3。

Postman实现方案

1. 在请求Tests脚本中提取并存储ID列表

在返回目标JSON的请求的Tests标签中,编写以下脚本:

// 解析响应数据
const responseData = pm.response.json();
// 提取所有书籍ID到数组
const bookIds = responseData[0].books.map(item => item.id);
// 将数组转成字符串存入环境变量(Postman无法直接存数组)
pm.environment.set("bookIds", JSON.stringify(bookIds));
// 初始化计数器,记录当前使用的ID索引
pm.environment.set("currentIdIndex", 0);

2. 在目标HTTP请求的前置脚本中获取当前ID

在需要传入书籍ID的每个HTTP请求的Pre-request Script标签中,添加以下脚本:

// 从环境变量取出ID数组并解析
const bookIds = JSON.parse(pm.environment.get("bookIds"));
const currentIndex = parseInt(pm.environment.get("currentIdIndex"));
// 获取当前要使用的书籍ID
const currentBookId = bookIds[currentIndex];
// 将ID设置为临时变量供请求使用
pm.variables.set("currentBookId", currentBookId);
// 递增计数器,确保下一个请求使用下一个ID
pm.environment.set("currentIdIndex", currentIndex + 1);

3. 在请求中引用ID

在请求的参数、路径或请求体中,用{{currentBookId}}引用当前书籍ID即可。


内容的提问来源于stack exchange,提问作者Vivek Kanna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 01:10:01