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

在Node.js中如何将指定格式CSV文件转换为目标结构的JSON文件

Node.js 实现特定格式CSV转JSON方案

你给出的CSV属于非标准结构化格式,字段值跨多行、不同对象用///分隔,无法直接用通用CSV解析库处理,以下是可直接运行的完整实现代码:

const fs = require('fs');

// 读取CSV文件
fs.readFile('./input.csv', 'utf8', (err, data) => {
  if (err) {
    console.error('读取文件失败:', err);
    return;
  }

  // 按///分割为多个对象块,过滤空块
  const objectBlocks = data.split('///').filter(block => block.trim().length > 0);
  const result = [];

  objectBlocks.forEach(block => {
    const lines = block.trim().split('\n').map(line => line.trim());
    const currentObj = {
      Name: {},
      Role: [],
      Address: []
    };
    let currentField = '';

    lines.forEach(line => {
      if (!line) return;
      const [firstPart, ...restParts] = line.split(',').map(part => part.trim());
      
      // 判断行首是否为字段名
      if (['Name', 'Role', 'Address'].includes(firstPart)) {
        currentField = firstPart;
        const valuePart = restParts.join(',').trim();
        processFieldValue(currentField, valuePart, currentObj);
      } else {
        // 是上一个字段的续值,整行都是值内容
        const valuePart = line.trim();
        processFieldValue(currentField, valuePart, currentObj);
      }
    });

    result.push(currentObj);
  });

  // 输出到JSON文件
  fs.writeFile('./output.json', JSON.stringify(result, null, 2), err => {
    if (err) {
      console.error('写入JSON文件失败:', err);
      return;
    }
    console.log('转换完成,结果已保存到output.json');
  });
});

// 字段值处理函数
function processFieldValue(field, value, obj) {
  if (!value) return;
  switch(field) {
    case 'Name':
      const [firstName, lastName] = value.split(' ');
      obj.Name.first_name = firstName;
      obj.Name.last_name = lastName;
      break;
    case 'Role':
      // 去掉末尾分号,过滤空内容
      const roles = value.replace(/;$/, '').trim();
      if (roles) obj.Role.push(roles);
      break;
    case 'Address':
      // 按逗号分割所有地址段,去空格过滤空值
      const addressParts = value.split(',').map(p => p.trim()).filter(p => p);
      obj.Address.push(...addressParts);
      break;
  }
}

使用说明

  • 将你的CSV内容保存为input.csv,和上述代码放在同一目录
  • 运行node 你的脚本文件名.js即可生成符合要求的output.json
  • 代码默认兼容空格、多余分号、空行等格式异常,你给出的示例输入可直接输出你要求的JSON结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 18:42:03