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

Postman读取CSV数据生成指定请求体问题求助

Postman预请求脚本处理CSV生成指定请求体问题解决

原始CSV内容

userName,password,address1,countryId
test1,pass1,lblr,1
test2,pass2,

预期请求体格式

迭代#1:

{
  "user": {
    "userName": "test1",
    "password": "pass1",
    "address": [
      {
        "address1": "lblr",
        "countryId": "1"
      }
    ]
  }
}

迭代#2:

{
  "user": {
    "userName": "test2",
    "password": "pass2"
  }
}

修正后的代码

let lines = iterationData.split('\n');
let headers = lines[0].split(',');
let requestBodyArray = [];

for (let i = 1; i < lines.length; i++) {
    let line = lines[i].trim();
    // 跳过空行
    if (!line) continue;
    
    let values = line.split(',');
    let userObject = { user: {} };
    let addressObj = {};

    for (let j = 0; j < headers.length; j++) {
        let key = headers[j].trim();
        let value = values[j] ? values[j].trim() : '';

        if (value !== "") {
            if (key === "countryId" || key === "address1") {
                addressObj[key] = value;
            } else {
                userObject.user[key] = value;
            }
        }
    }

    // 仅当address有属性时才添加该字段
    if (Object.keys(addressObj).length > 0) {
        userObject.user.address = [addressObj];
    }

    requestBodyArray.push(userObject);
}

console.log(JSON.stringify(requestBodyArray, null, 2));

关键修正说明

  1. 跳过空行:处理CSV时过滤掉空行,避免生成无效的空对象。
  2. 统一管理address对象:将address1和countryId统一存入临时对象addressObj,最后再判断是否添加到user的address数组,逻辑更简洁。
  3. 避免空address字段:只有当addressObj包含属性时,才生成address字段,符合迭代#2的预期(无address字段)。
  4. 处理字段长度不足:当CSV行的字段数少于表头时,用空字符串兜底,避免索引越界问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:15:24