如何在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 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告