如何在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" } ]
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
示例程式碼
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
廣告