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

如何从单个JSON文件读取多组数据并用于API请求体

用单个JSON文件实现多线程/用户的请求体参数化(替代CSV)

完全可以用单个JSON文件替代CSV,实现不同线程/用户使用不同请求体参数的效果,尤其适合请求体包含嵌套结构的场景。下面是具体实现步骤:

实现方法(以JMeter为例)

1. 准备JSON数据文件

使用你提供的数组格式JSON文件,每组对象对应一套请求体参数:

[
  {
    "album": "The White Stripes",
    "year": 1999,
    "US_peak_chart_post": "-"
  },
  {
    "album": "De Stijl",
    "year": 2000,
    "US_peak_chart_post": "-"
  },
  {
    "album": "White Blood Cells",
    "year": 2001,
    "US_peak_chart_post": 61
  }
]

2. 添加JSR223 Sampler解析JSON并设置变量

在HTTP Request采样器之前添加JSR223 Sampler,选择Groovy作为脚本语言,写入以下脚本:

// 读取JSON文件(替换为你的文件绝对/相对路径)
def jsonFile = new File("./test_data.json")
def jsonSlurper = new groovy.json.JsonSlurper()
def dataList = jsonSlurper.parse(jsonFile)

// 根据线程编号分配对应数据,取模实现循环复用
def threadIndex = ctx.getThreadNum()
def currentData = dataList[threadIndex % dataList.size()]

// 将参数设置为JMeter变量,供后续请求调用
vars.put("album", currentData.album.toString())
vars.put("year", currentData.year.toString())
vars.put("US_peak_chart_post", currentData.US_peak_chart_post.toString())

3. 在HTTP Request中调用变量

在HTTP Request的Body Data里,直接使用${变量名}引用参数:

{
  "album": "${album}",
  "year": ${year},
  "US_peak_chart_post": "${US_peak_chart_post}"
}

注意事项

  • 文件路径:可以用绝对路径(如C:/jmeter/test_data.json),也可以用相对JMeter bin目录的路径
  • 数据复用:threadIndex % dataList.size()保证当线程数超过JSON数据组数时,循环使用现有数据
  • 复杂结构支持:如果请求体需要嵌套对象或数组,JSON文件可以直接对应结构,解析后直接提取嵌套字段即可,这比CSV更灵活

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:23:13