📜  如何在 JavaScript 中将 CSV 转换为 JSON 文件,反之亦然?(1)

📅  最后修改于: 2023-12-03 15:38:17.728000             🧑  作者: Mango

如何在 JavaScript 中将 CSV 转换为 JSON 文件,反之亦然?

在实际开发中,经常需要将 CSV 格式的文件转换为 JSON 文件或者将 JSON 文件转换为 CSV 格式。本篇文章将介绍如何在 JavaScript 中实现这个转换过程。

CSV 到 JSON 的转换
CSV 格式的文件结构

CSV 是一种常见的数据格式,其全称为 Comma-Separated Values,即逗号分隔值。CSV 文件中每一行代表一条记录,每个记录由多个字段组成,不同字段之间用逗号分隔。例如,下面是一个简单的 CSV 文件:

name,age,gender
John,29,M
Alice,23,F
将 CSV 文件转换为 JSON 格式

CSV 转换为 JSON 的过程包括以下步骤:

  1. 读取 CSV 文件内容
  2. 将 CSV 文件内容解析为数组
  3. 将数组转换为 JSON 格式

这里使用 PapaParse 库来实现 CSV 文件的解析和转换。安装方式如下:

npm install papaparse --save

下面是将 CSV 文件转换为 JSON 的示例代码:

const Papa = require('papaparse');
const fs = require('fs');

const csvFilePath = 'data.csv';
const outFile = 'data.json';

const csvContent = fs.readFileSync(csvFilePath, { encoding: 'utf8' });

const result = Papa.parse(csvContent, { header: true })
    .data.map((row) => {
        return {
            name: row.name,
            age: Number(row.age),
            gender: row.gender
        };
    });

fs.writeFileSync(outFile, JSON.stringify(result, null, 2));

上述代码中,我们首先使用 fs.readFileSync 读取 CSV 文件内容。然后调用 PapaParse 的 parse 方法将内容解析为数组。由于 CSV 中第一行通常为表头,将 header 设置为 true,PapaParse 会自动将第一行当作表头处理。最后,将数组转换为 JSON 格式并写入到输出文件中。

JSON 到 CSV 的转换
JSON 格式的文件结构

与 CSV 不同,JSON 是一种层级结构的数据格式。JSON 文件由多个键值对组成,其中值可以是字符串、数字、布尔值、数组、对象等类型。例如,下面是一个简单的 JSON 文件:

[
    {
        "name": "John",
        "age": 29,
        "gender": "M"
    },
    {
        "name": "Alice",
        "age": 23,
        "gender": "F"
    }
]
将 JSON 文件转换为 CSV 格式

JSON 转换为 CSV 的过程包括以下步骤:

  1. 读取 JSON 文件内容
  2. 将 JSON 文件内容解析为对象数组
  3. 根据对象数组的属性生成 CSV 格式的字符串

下面是将 JSON 文件转换为 CSV 的示例代码:

const fs = require('fs');

const inFile = 'data.json';
const outFile = 'data.csv';

const jsonData = JSON.parse(fs.readFileSync(inFile));

const fields = Object.keys(jsonData[0]);
const csvData = [
    fields.join(',')
].concat(jsonData.map((row) => {
    return fields.map((fieldName) => row[fieldName]).join(',');
}));

fs.writeFileSync(outFile, csvData.join('\n'));

上述代码中,我们首先使用 fs.readFileSync 读取 JSON 文件内容,然后调用 JSON.parse 将内容解析为对象数组。由于 CSV 中第一行通常为表头,我们需要获取对象数组中的键名作为表头,用逗号拼接成字符串。然后使用 map 方法将每个对象转换为一行字符串,这里使用 fields.map 方法来保证字段的顺序与表头一致。最后,将数组转换为 CSV 格式的字符串并写入到输出文件中。

总结

本篇文章介绍了如何在 JavaScript 中将 CSV 格式的文件转换为 JSON 文件,反之亦然。使用 PapaParse 库可以方便地将 CSV 文件解析为对象数组。对于 JSON 转换为 CSV 的过程,我们需要根据对象数组的属性生成 CSV 格式的字符串。