如何在JavaScript中将JSON转换为CSV文件?


JavaScript 对象表示法或 JSON 广泛用于数据交换,而导出和导入模块化结果数据则通过 CSV(逗号分隔值)完成。为了报告目的或与不同系统集成,将 JSON 转换为其他格式非常常见。在本文中,我们将探讨在 JavaScript 中将 JSON 数据转换为 CSV 格式的不同方法,包括其代码、示例及其原理的说明。

理解 JSON 和 CSV 格式

  • JSON:JSON 将数据表示为对象的数组,每个对象包含键值对。
  • [
      { "name": "Pankaj", "age": 20, "city": "Surat" },
      { "name": "Neeraj", "age": 18, "city": "Raipur" }
    ]
        
  • CSV:CSV 数据按行排列,第一行包含列标题,后续行包含以逗号分隔的数据值。
  • name,age,city
    Pankaj,20,Surat
    Neeraj,18,Raipur
        

将 JSON 文件转换为 CSV 的方法

使用 JavaScript 的 map() 和 join() 方法

在此方法中,我们使用 JavaScript 的map() 迭代 JSON 数据,并使用join() 将每一行和每一列格式化为 CSV。

  • 步骤 1:从第一个 JSON 对象的键中提取标题。
  • 步骤 2:使用 map() 为每个 JSON 对象创建一个 CSV 行。
  • 步骤 3:将标题和行组合在一起以形成最终的 CSV 字符串。

示例代码

function jsonToCsv(json) {
  const headers = Object.keys(json[0]);
  const rows = json.map(obj => headers.map(header => obj[header]).join(','));
  return [headers.join(','), ...rows].join('
'); } // Example usage const jsonData = [ { "name": "Pankaj", "age": 20, "city": "Surat" }, { "name": "Neeraj", "age": 18, "city": "Raipur" } ]; const csvResult = jsonToCsv(jsonData); console.log(csvResult);

输出

name,age,city
Pankaj,20,Surat
Neeraj,18,Raipur

使用动态列提取

对于对象可能具有不同字段的 JSON 数据,此方法动态地提取所有唯一键以确保所有字段都包含在 CSV 输出中。

  • 步骤 1:从 JSON 数据中提取所有唯一键作为标题。
  • 步骤 2:将每个 JSON 对象映射到 CSV 行,在某些标题缺少数据的地方填充空值。

示例代码

function jsonToCsv(json) {
  const headers = Array.from(new Set(json.flatMap(obj => Object.keys(obj))));
  const rows = json.map(obj =>
    headers.map(header => obj[header] !== undefined ? obj[header] : '').join(',')
  );
  return [headers.join(','), ...rows].join('
'); } // Example usage const jsonData = [ { "name": "Pankaj", "age": 20, "city": "Surat" }, { "name": "Neeraj", "age": 18, "city": "Raipur" } ]; const csvResult = jsonToCsv(jsonData); console.log(csvResult);

输出

name,age,city
Pankaj,20,Surat
Neeraj,18,Raipur

使用外部库(例如,json2csv)

对于大型或复杂的 JSON 数据,像 json2csv 这样的外部库可以简化此过程。它处理嵌套对象和自定义分隔符等特殊情况,并提供简单的 API 以进行快速转换。

  • 步骤 1:使用 npm 安装 json2csv
  • npm install json2csv
  • 步骤 2:使用 json2csv 解析 JSON 并将其转换为 CSV 格式。

示例代码

const { parse } = require('json2csv');

function convertJsonToCsv(json) {
  const csv = parse(json);
  return csv;
}

// Example usage
const jsonData = [
  { "name": "Pankaj", "age": 20, "city": "Surat" },
  { "name": "Neeraj", "age": 18, "city": "Raipur" }
];
const csvResult = convertJsonToCsv(jsonData);
console.log(csvResult);

输出

name,age,city
Pankaj,20,Surat
Neeraj,18,Raipur

更新于:2024年11月7日

56 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告