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

JMeter:如何在循环中动态生成含多个ID的请求体?

实现动态构造指定格式请求体的方案

前提确认

假设你使用JSON提取器时设置的变量名称为productId,JMeter会自动生成以下变量:

  • productId_matchNr:提取到的ID总数
  • productId_1、productId_2……productId_N:对应每个提取到的具体ID值

操作步骤

1. 添加JSR223前置处理器

在需要发送目标请求的Sampler上,添加「JSR223 PreProcessor」,选择Groovy语言,在脚本框中写入以下代码:

// 获取ID总数
def totalIds = vars.get("productId_matchNr") as int
def productList = []

// 遍历所有ID,构造单个id对象
for (int i = 1; i <= totalIds; i++) {
    def currentId = vars.get("productId_" + i)
    productList.add([id: currentId])
}

// 生成符合要求的JSON字符串,存入变量
vars.put("targetRequestBody", new groovy.json.JsonBuilder([products: productList]).toPrettyString())

2. 引用构造好的请求体

将目标请求的Body内容替换为${targetRequestBody},JMeter会自动根据提取到的ID数量,动态生成包含对应条目请求体。

比如提取到5个ID时,最终请求体格式为:

{
    "products": [
        {
            "id": "id1"
        },
        {
            "id": "id2"
        },
        {
            "id": "id3"
        },
        {
            "id": "id4"
        },
        {
            "id": "id5"
        }
    ]
}

3. 适配调整

如果你的JSON提取器变量名不是productId,只需将代码中所有productId替换为你实际使用的变量名称即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:15:31