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

Gatling批量Feed获取单条记录返回错误类型问题排查

Gatling批量读取CSV时获取参数值异常

场景说明

CSV文件内容如下:

requestParam
string
string2
string3

尝试通过批量方式从CSV读取记录并获取值,代码如下:

ScenarioBuilder scn = scenario("Batch Processing Example")
    .repeat(1).on(
        feed(csvFeeder, 10).exec(session -> {
            for (int i = 0; i < 10; i++) {
                String requestParam = session.getString("requestParam");
                System.out.println(requestParam); // 此处无法正常工作
            }
            return session;
        })
        .exec(
            //无关代码
        )
    );

此时输出结果为:[Ljava.lang.Object;@4ebc2694

但不使用批量分割记录的方式时,代码可以正常运行:

ScenarioBuilder scn = scenario("Batch Processing Example")
    .repeat(1).on(
        feed(csvFeeder).exec(session -> {
                String requestParam = session.getString("requestParam");
                System.out.println(requestParam);
            return session;
        })
        .exec(
            //无关代码
        )
    );

问题原因及解决方案

当使用feed(csvFeeder, batchSize)这种批量读取模式时,Gatling会将指定批量的CSV记录以数组形式存储在Session中,而不是单个值。此时session.getString("requestParam")拿到的是一个Object数组,直接打印就会输出数组的内存地址(也就是你看到的[Ljava.lang.Object;@4ebc2694)。

正确的处理方式是把获取到的对象转为数组,再遍历取值:

ScenarioBuilder scn = scenario("Batch Processing Example")
    .repeat(1).on(
        feed(csvFeeder, 10).exec(session -> {
            Object[] requestParams = session.get("requestParam");
            for (Object param : requestParams) {
                System.out.println(param.toString());
            }
            return session;
        })
        .exec(
            //无关代码
        )
    );

或者更严谨地指定字符串数组类型:

String[] requestParams = session.get("requestParam");
for (String param : requestParams) {
    System.out.println(param);
}

另外需要注意,如果你设置的batchSize(这里是10)大于CSV中的实际记录数,数组长度会等于实际记录数,不会填充空值,遍历的时候无需额外处理边界问题。

内容的提问来源于stack exchange,提问作者Peter S.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 16:23:18