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

NodeJS中csvtojson如何将一列拆分为两个键值对

Node.js CSV转JSON:拆分Name列为firstName和lastName的最优实现

需求回顾

需要将CSV文件转换为JSON,同时完成:

  • 对指定字段(如phone)进行SHA1哈希处理
  • 修改表头名称以匹配目标字段要求
  • 将CSV中的Name列拆分为firstName(名字)和lastName(姓氏)两个字段

示例CSV内容

email,phone,Name,zipcode,country,gender,Price
email1@email.com,1-(650)-561-5622,Eliza Rabbit,94046,US,Female,"$15,00"

问题分析

你之前尝试添加空格作为列分隔符的方式不可行,因为csvtojson的delimiter参数是用来定义CSV列之间的分隔符,而非字段内部内容的分隔符。列内的空格属于字段值的一部分,无法通过列分隔符拆分。

最优解决方案

使用csvtojson的transform回调函数,在CSV转换为JSON对象后,对姓名字段进行拆分,同时完成表头重命名和哈希处理。这种方式灵活可控,还能兼容姓氏包含空格的场景(如"Van Helsing"这类复姓/带中间名的情况)。

修改后的代码

const csv = require('csvtojson');
const sha1 = require('sha1');

const csvFilePath = 'filepath';

csv({
  trim: true,
  delimiter: ",", // 仅保留逗号作为列分隔符
  noheaders: false,
  // 先映射为直观的临时表头,方便后续处理
  headers: ['tempEmail', 'tempPhone', 'fullName', 'tempZip', 'country', 'tempGender', 'price'],
  colParser: {
    // 对手机号进行SHA1哈希处理
    "tempPhone": (item) => sha1(item)
  },
  // 转换后处理每个JSON对象
  transform: (jsonObj) => {
    // 拆分姓名:名字取第一部分,姓氏取剩余所有部分(兼容含空格的姓氏)
    const nameSegments = jsonObj.fullName.split(' ');
    jsonObj.firstName = nameSegments[0];
    jsonObj.lastName = nameSegments.slice(1).join(' ');

    // 重命名表头以匹配目标字段要求
    jsonObj.em = jsonObj.tempEmail;
    jsonObj.ph = jsonObj.tempPhone;
    jsonObj.zp = jsonObj.tempZip;
    jsonObj.ge = jsonObj.tempGender;

    // 删除临时字段
    delete jsonObj.tempEmail;
    delete jsonObj.tempPhone;
    delete jsonObj.fullName;
    delete jsonObj.tempZip;
    delete jsonObj.tempGender;

    return jsonObj;
  }
})
.fromFile(csvFilePath)
.then((result) => {
  console.log(result);
});

输出结果

[
  {
    "country": "US",
    "price": "$15,00",
    "firstName": "Eliza",
    "lastName": "Rabbit",
    "em": "email1@email.com",
    "ph": "937a997da6b9f647b3b378ef27f91952eb09fd26",
    "zp": "94046",
    "ge": "Female"
  }
]

方案优势

  • 灵活性高:通过transform函数可以一次性完成字段拆分、表头重命名、冗余字段清理等操作
  • 鲁棒性强:处理姓氏包含空格的场景,避免简单拆分导致的姓氏丢失
  • 代码可读性好:临时表头命名直观,逻辑清晰易维护

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:30:45