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

JMeter如何根据正则表达式提取的数组大小动态生成JSON请求块

JMeter动态生成可变数量JSON请求块实现方案

1. 前置提取配置

不管使用正则表达式后置处理器还是更推荐的JSON提取器,都要设置匹配数字为-1(提取所有匹配结果),此时JMeter会自动生成以下格式的变量:

  • 总匹配数:collectionId_matchNr、solutionId_matchNr,值为匹配到的ID总数量
  • 单个匹配值:collectionId_1、collectionId_2……collectionId_N,solutionId_1、solutionId_2……solutionId_N,对应第N个匹配到的ID值

2. 用JSR223前置处理器生成动态JSON数组

在需要发送动态请求的HTTP采样器下,新增JSR223前置处理器,语言选择Groovy,填入以下脚本:

// 生成动态collection块
def collectionCount = vars.get("collectionId_matchNr") as int
def collectionList = []
for (i in 1..collectionCount) {
    def collItem = [
        "CollectionId": vars.get("collectionId_${i}"),
        "StartTime": "替换为你需要的时间值/提取的对应变量",
        "EndTime": "替换为你需要的时间值/提取的对应变量",
        "ErrorCode": "*",
        "IsSuccess": true
    ]
    collectionList.add(collItem)
}
// 将生成的collection数组存入JMeter变量
vars.putObject("dynamicCollections", collectionList)

// 生成动态solution块
def solutionCount = vars.get("solutionId_matchNr") as int
def solutionList = []
for (i in 1..solutionCount) {
    def solItem = [
        "SolutionId": vars.get("solutionId_${i}"),
        "Solution***": "替换为对应字段值",
        "SolutionVersion": "替换为对应版本值",
        "StartTime": "替换为你需要的时间值/提取的对应变量",
        "EndTime": "替换为你需要的时间值/提取的对应变量",
        "LastSyncUTC": "替换为对应的UTC时间值",
        "ErrorCode": "0",
        "IsSuccess": true
    ]
    solutionList.add(solItem)
}
// 将生成的solution数组存入JMeter变量
vars.putObject("dynamicSolutions", solutionList)

3. HTTP请求体直接引用动态变量

在HTTP采样器的请求Body中直接引用上面生成的变量即可,JMeter会自动将Groovy的List对象转换为标准JSON数组格式,无需手动处理逗号、括号等语法细节:

{
  // 其他固定请求字段
  "Collections": ${dynamicCollections},
  "SolutionSyncLog": ${dynamicSolutions}
  // 其他固定请求字段
}

注意事项

  • 若提取源是JSON响应,更推荐使用JSON提取器替代正则表达式后置处理器,不受JSON格式换行、空格变化影响,匹配稳定性更高,生成的变量格式和正则提取完全兼容上述脚本。
  • 必须选择Groovy作为JSR223的执行语言,相比BeanShell性能提升数倍,高并发场景下优势更明显。
  • 如果每个ID对应的StartTime、EndTime等字段也是独立值,可同步提取为startTime_1、startTime_2这类带序号的变量,在循环中直接通过vars.get("startTime_${i}")调用即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:27:04