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

JMeter如何动态生成含多数组数据的JSON请求并单次发送?

JMeter动态生成JSON请求方案

可以实现,通过JSR223 PreProcessor编写Groovy脚本,动态拼接包含所有元素的JSON请求体,在单个请求中发送。具体步骤如下:

1. 确认数组变量提取完成

确保你通过GET请求提取的三个数组已存储为JMeter变量,例如:

  • ISBN数组:isbn_1、isbn_2...isbn_N,且有isbn_matchNr记录数组长度
  • Price数组:price_1、price_2...price_N,对应price_matchNr
  • Publisher数组:pub_1、pub_2...pub_N,对应pub_matchNr
  • 公共变量:publisherName

2. 添加JSR223 PreProcessor

在需要发送JSON的HTTP请求前添加JSR223 PreProcessor,选择Groovy语言(性能最优),编写以下脚本:

// 获取公共出版商名称
def publisherName = vars.get("publisherName")
// 获取数组长度(假设三个数组长度一致,取其中一个即可)
def arrayLength = vars.get("isbn_matchNr") as int

// 初始化books数组
def booksList = []

// 循环生成每个book对象
for (int i = 1; i <= arrayLength; i++) {
    def bookItem = [
        "publisher": publisherName,
        "ISBN": vars.get("isbn_" + i),
        "Price": vars.get("price_" + i) as BigDecimal, // 转为数字类型,根据实际需求调整
        "Publisher": vars.get("pub_" + i),
        "fixedValue": 100 // 固定值100,可自定义字段名
    ]
    booksList.add(bookItem)
}

// 构建完整请求JSON
def requestJson = [
    "books": booksList
]

// 将JSON字符串存入变量,供请求体引用
vars.put("dynamicRequestBody", new groovy.json.JsonBuilder(requestJson).toString())

3. 配置HTTP请求体

在HTTP请求的Body Data中,直接引用生成的变量:

${dynamicRequestBody}

注意事项

  • 若三个数组长度不一致,可在脚本中添加长度校验逻辑,例如取最小长度作为循环上限
  • 字段类型需与接口要求匹配,例如Price若为数字类型,需通过as BigDecimal或as int转换,避免JSON中出现字符串格式的数字
  • 替换脚本中的变量名(如isbn_、price_)为你实际提取的变量前缀

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 00:13:19