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


CSV(逗号分隔值)文件格式非常适合许多存储表格数据的应用程序,而JSON(JavaScript对象表示法)在Web应用程序中很流行。因为它易于理解,并且与JavaScript的协作需要大量工作才能将数据从CSV转换为JSON格式。特别是对于在JavaScript中处理数据的情况,本文探讨了不同的技术。使用语法将CSV文件转换为JSON格式的JavaScript代码,以及一些示例的解释。

理解CSV和JSON格式

  • CSV: 通过逗号分隔行来保存数据,使CSV非常易于使用。每一行都用换行符表示,清晰地描绘了给定行中用逗号分隔的值集。
  • name,age,city
    Pankaj,20,Surat
    Neeraj,18,Raipur
        
  • JSON: JSON 将数据表示为对象的数组,每个对象都包含键值对。
  • [
      { "name": "Pankaj", "age": 20, "city": "Surat" },
      { "name": "Neeraj", "age": 18, "city": "Raipur" }
    ]
        

将CSV文件转换为JSON的方法

使用JavaScript的split和map方法

此方法使用split() 分隔行和值,并将它们转换为对象数组。

  • 步骤1:将CSV文件内容读取为字符串。
  • 步骤2:按行分割内容。
  • 步骤3:使用第一行作为标题。
  • 步骤4:使用标题作为键将后续的每一行映射到一个对象。

示例代码

function csvToJson(csv) {
  const lines = csv.trim().split('
'); const headers = lines[0].split(','); return lines.slice(1).map(line => { const values = line.split(','); return headers.reduce((obj, header, index) => { obj[header] = values[index]; return obj; }, {}); }); } // Example usage const csvData = `name,age,city
Pankaj,20,Surat
Neeraj,18,Raipur`; const jsonResult = csvToJson(csvData); console.log(JSON.stringify(jsonResult, null, 2));

输出

[
  { "name": "Pankaj", "age": 20, "city": "Surat" },
  { "name": "Neeraj", "age": 18, "city": "Raipur" }
]

使用正则表达式进行解析

但是,对于更复杂的CSV文件(例如,使用引号括住值或值中包含逗号的文件),可以使用正则表达式来处理解析。这种称为解析的方法使用正则表达式来正确分割CSV值。

示例代码

function csvToJson(csv) {
  const lines = csv.trim().split('
'); const headers = lines[0].split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/); return lines.slice(1).map(line => { const values = line.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/); return headers.reduce((obj, header, index) => { obj[header] = values[index].replace(/^"|"$/g, ''); // Remove surrounding quotes return obj; }, {}); }); } // Example usage const csvData = `name,age,city
Pankaj,20,Surat
Neeraj,18,Raipur`; const jsonResult = csvToJson(csvData); console.log(JSON.stringify(jsonResult, null, 2));

输出

[
  { "name": "Pankaj", "age": 20, "city": "Surat" },
  { "name": "Neeraj", "age": 18, "city": "Raipur" }
]

使用外部库(例如,PapaParse)

示例代码

PapaParse 是一个已知的库,它支持包含逗号分隔值以及嵌入式逗号、引号和换行符等复杂情况的格式。这简化了流程并提高了大型文件的性能。

  • 步骤1:安装PapaParse
  • npm install papaparse
  • 步骤2:使用Papa.parse将CSV转换为JSON。

示例代码

const Papa = require('papaparse');

function parseCsvWithPapa(csv) {
  const result = Papa.parse(csv, { header: true });
  return result.data;
}

// Example usage
const csvData = `name,age,city
Pankaj,20,Surat
Neeraj,18,Raipur`; const jsonResult = parseCsvWithPapa(csvData); console.log(JSON.stringify(jsonResult, null, 2));

输出

[
  { "name": "Pankaj", "age": 20, "city": "Surat" },
  { "name": "Neeraj", "age": 18, "city": "Raipur" }
]

更新于:2024年11月7日

47 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告