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

如何在JMeter中将响应数据字段保存到CSV并提取指定内容

解决JMeter提取JSON数组元素并保存到CSV的问题

方法一:使用JSON Extractor + 正则提取器(推荐,适配JSON结构更可靠)

步骤1:添加JSON Extractor

在目标请求下添加「JSON Extractor」,配置如下:

  • 引用名称:data_items
  • JSON Path表达式:$.data_points[*]
  • 匹配数字:-1(提取数组内所有元素)

配置后会自动生成变量:data_items_1(值为thank you: James)、data_items_2(值为goodbye:Ella),数组有更多元素时会生成对应序号的变量。

步骤2:添加正则表达式提取器处理元素前缀

添加「正则表达式提取器」,提取每个元素中冒号前的文本:

  • 引用名称:prefix
  • 正则表达式:(.+?):
  • 模板:$1$
  • 匹配数字:0(匹配所有元素,生成prefix_1、prefix_2等变量)

步骤3:修改BeanShell后置处理器脚本

将提取到的前缀整理成指定格式并写入CSV:

// 收集所有提取到的前缀
List<String> prefixes = new ArrayList<>();
int index = 1;
while (vars.get("prefix_" + index) != null) {
    prefixes.add("\"" + vars.get("prefix_" + index) + "\"");
    index++;
}

// 拼接成目标格式
String outputLine = String.join(", ", prefixes);

// 写入CSV,true表示追加模式(原注释错误:true是追加,覆盖需用false或省略该参数)
FileOutputStream fos = new FileOutputStream("C://File/Book1.csv", true);
PrintStream ps = new PrintStream(fos);
ps.println(outputLine);
fos.close();

方法二:直接使用正则表达式提取

如果偏好正则方式,调整正则规则匹配数组内容:

正则表达式提取器配置

  • 引用名称:raw_data
  • 正则表达式:"data_points":\s*\[(.*?)\]
  • 模板:$1$

BeanShell脚本处理内容

String rawContent = vars.get("raw_data");
// 拆分数组元素并提取前缀
String[] items = rawContent.split(",");
List<String> prefixes = new ArrayList<>();
for (String item : items) {
    // 清理引号和空格,提取冒号前部分
    String cleanItem = item.replaceAll("\"", "").trim();
    String prefix = cleanItem.split(":")[0];
    prefixes.add("\"" + prefix + "\"");
}
String outputLine = String.join(", ", prefixes);

// 写入CSV
FileOutputStream fos = new FileOutputStream("C://File/Book1.csv", true);
PrintStream ps = new PrintStream(fos);
ps.println(outputLine);
fos.close();

注意事项

  • 确保C://File/目录已存在,否则会抛出文件未找到异常
  • 2000次请求高并发场景下,BeanShell追加写入可能存在文件锁问题,可考虑结合JMeter内置的「Sample Variables」配置结果文件写入,稳定性更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 15:46:26