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));
关键修正说明
- 跳过空行:处理CSV时过滤掉空行,避免生成无效的空对象。
- 统一管理address对象:将
address1和countryId统一存入临时对象addressObj,最后再判断是否添加到user的address数组,逻辑更简洁。 - 避免空address字段:只有当
addressObj包含属性时,才生成address字段,符合迭代#2的预期(无address字段)。 - 处理字段长度不足:当CSV行的字段数少于表头时,用空字符串兜底,避免索引越界问题。
内容的提问来源于stack exchange,提问作者Koushic
相关产品推荐
相关产品推荐

