如何在 Node.js 中将 CSV 文件转换为逗号分隔值的 JSON 文件?

2025年5月2日 | 阅读 4 分钟

CSV 是一种逗号分隔值文件,扩展名为 .csv,用于存储表格数据,值之间用逗号分隔。在本文中,我们将介绍如何在不使用任何第三方 npm 包的情况下将 CSV 数据转换为 JavaScript Object Notation (JSON)

与典型的转换不同,这种方法处理行内值也用逗号分隔的情况,这与传统的列分隔不同。我们将通过首先将 CSV 文件的内容加载到数组中,然后根据分隔符对其进行拆分来完成此操作。CSV 的每一行都将被转换为 JSON 对象,然后将这些对象添加到一个结果数组中。

CSV 的每一行都将被转换为 JSON 对象,然后将这些对象添加到一个结果数组中。最后,这个数组将被转换为 JSON 格式,生成一个 JSON 输出文件。这个过程确保 CSV 数据能够无缝地转换为 JSON 格式,并且可以适应各种数据结构,而无需任何外部依赖。

方法

  • 可以使用默认的 fs npm 包来读取 CSV 文件。
  • 之后,将数据转换为字符串,然后将其组织成一个数组。
  • 创建一个包含标题的数组。

对剩余的 n-1 行中的每一行执行以下操作

  • 首先,创建一个空对象,并用当前行中的值填充它。
  • 为了更改分隔符,将当前数组值声明为字符串 str,并将结果字符串保存在新字符串 s 中。
  • 如果我们遇到一个开引号 ("),我们就保留逗号;否则,我们就用管道符 "|" 替换它们。
  • 继续将遇到的字符添加到字符串中。
  • 使用管道符 | 分割字符串,并将结果保存在 properties 数组中。
  • 如果标题的值包含多个逗号分隔的数据,我们就将其存储为数组;否则,值将直接存储。
  • 将生成的对象插入我们的结果数组中。

示例

1. 安装所需的包

2. Node.js 脚本

创建一个新的 JavaScript 文件(例如,convert.js),并添加以下代码来读取 CSV 文件并将其转换为 JSON。

3. 运行脚本

输出

 
[
  {
    "id": "1", 
    "name": "Sam Wilson",
    "age": "22",
    "city": "France"
  },
  {
    "id": "2",
    "name": "Jane ",
    "age": "27",
    "city": "London"
  },
  {
    "id": "3",
"name": "John Doe",
    "age": "30",
    "city": "paris"
  }
]

说明

  • 导入模块:脚本包含用于将 CSV 转换为 JSON 的 csvtojson 库,用于文件系统操作的 fs 模块,以及用于处理文件路径的 path 模块。
  • 文件路径:脚本指定了输入 CSV 文件 (csvFilePath) 和输出 JSON 文件 (jsonFilePath) 的路径。
  • CSV 转 JSON 的步骤:convertCsvToJson 函数采用 CSV 文件,并使用 csv().fromFile(csvFilePath) 将其转换为 JSON 数组。
  • 将 JSON 写入文件:为了将 JSON 数组保存到文件中,请使用 fs.writeFileSync。
  • 错误处理:脚本包含错误处理,以捕获和记录在转换过程中可能发生的任何错误。

结论

总之,在 Node.js 中将 CSV 文件转换为 JSON 文件是一个直接的过程,可以使用 csvtojson 库快速有效地完成。可以采取几个简单的步骤来读取 CSV 文件,解析其逗号分隔的值,并将数据转换为 JSON 格式,这对于 Web 应用程序和 API 通常更方便。该过程包括安装所需的包,编写一个简短的 Node.js 脚本来处理转换,以及运行脚本来生成所需的 JSON 输出。这种方法不仅简化了系统之间的数据交换,还使数据在 JavaScript 环境中更易于使用和访问。Node.js 和 csvtojson 使开发人员能够轻松地管理和操作数据,从而实现流畅高效的数据处理工作流。