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

如何使用Node.js将CSV文件转换为JSON文件?现有读取代码求改造

嘿,我来帮你把CSV转成JSON!你现在的代码已经能读取CSV内容了,只差把收集到的数据写入JSON文件这一步,很简单的,我给你拆解一下步骤:

首先,我们需要一个数组来暂存所有读取到的CSV行数据,等所有数据都读完之后,把这个数组转成JSON字符串,再写入到文件里。这里分两种情况,取决于你的CSV有没有表头:


情况1:你的CSV有表头(第一行是列名)

比如你的translation.csv长这样:

id,original,translation
1,Hello,你好
2,World,世界

这种情况下,我们可以让fast-csv把每一行转换成键值对对象,生成的JSON结构会更清晰。完整代码如下:

const fs = require('fs');
const csv = require('fast-csv');
const path = require('path');

// 用来存储转换后的所有数据
const jsonData = [];

// 读取CSV文件,开启表头解析模式
fs.createReadStream(path.resolve(__dirname, 'translation.csv'))
  .pipe(csv({ headers: true })) // 关键:开启后每行转为对象,键就是表头列名
  .on('data', (row) => {
    // 把每一行对象添加到数组中
    jsonData.push(row);
  })
  .on('end', () => {
    // 所有数据读取完成后,写入JSON文件
    fs.writeFile('translation.json', JSON.stringify(jsonData, null, 2), (err) => {
      if (err) {
        console.error('写入JSON文件时出错了:', err);
        return;
      }
      console.log('搞定!CSV已经成功转成JSON文件啦~');
    });
  })
  .on('error', (err) => {
    console.error('读取CSV文件时出错了:', err);
  });

运行这个脚本后,你会得到translation.json,内容大概是:

[
  {
    "id": "1",
    "original": "Hello",
    "translation": "你好"
  },
  {
    "id": "2",
    "original": "World",
    "translation": "世界"
  }
]

情况2:你的CSV没有表头(纯数据行)

如果你的CSV就是纯数据,没有列名,比如:

1,Hello,你好
2,World,世界

那我们直接把每行的数组存起来就行,代码只需要去掉headers: true:

const fs = require('fs');
const csv = require('fast-csv');
const path = require('path');

const jsonData = [];

fs.createReadStream(path.resolve(__dirname, 'translation.csv'))
  .pipe(csv())
  .on('data', (row) => {
    // row是一个数组,比如['1', 'Hello', '你好'],直接存入数组
    jsonData.push(row);
  })
  .on('end', () => {
    fs.writeFile('translation.json', JSON.stringify(jsonData, null, 2), (err) => {
      if (err) {
        console.error('写入失败:', err);
        return;
      }
      console.log('转换完成!');
    });
  })
  .on('error', (err) => {
    console.error('读取CSV出错:', err);
  });

生成的JSON会是数组的数组:

[
  ["1", "Hello", "你好"],
  ["2", "World", "世界"]
]

几个小提示:

  • 用path.resolve(__dirname, 'translation.csv')可以避免路径问题,不管你在哪个目录下运行脚本,都能正确找到CSV文件。
  • JSON.stringify的第三个参数2是用来格式化JSON的,让它有缩进,可读性更好;如果不需要格式化,可以改成JSON.stringify(jsonData),生成压缩后的JSON。
  • 别忘了监听error事件,不然脚本出错了你可能不知道原因哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:31:03