在这篇文章中,我们将逐步讲解如何将 逗号分隔值 (CSV) 数据转换为 JavaScript 对象表示法 (JSON) 格式。我们将通过清晰的解释和示例来详细介绍每一种方法。在 JavaScript 中,有多种方法可以实现 CSV 到 JSON 的转换,具体如下:
目录
- 分割行与循环遍历
- 使用正则表达式
- 使用第三方库
分割行与循环遍历
这种方法通过手动处理 CSV 数据的每一行并构建 JSON 结构,简化了 JavaScript 中的 CSV 解析过程。它涉及将 CSV 文本按行拆分,然后使用逗号作为分隔符将每一行拆分为单个值。通过遍历除标题行(Header)之外的每一行,我们创建一个 JSON 对象,其中第一行的值作为键(Keys),后续行的值作为相应的数据。
示例: 在 JavaScript 中将 CSV 转换为 JSON:将 CSV 字符串解析为 JSON 数据,将标题映射为键,将值映射到相应的数据字段,从而生成结构化的 JSON 输出。
function csvToJson(csvString) {
// 获取每一行
const rows = csvString
.split("
");
// 提取标题
const headers = rows[0]
.split(",");
const jsonData = [];
for (let i = 1; i < rows.length; i++) {
// 获取当前行的值
const values = rows[i]
.split(",");
const obj = {};
// 将标题和值映射到对象中
for (let j = 0; j < headers.length; j++) {
const key = headers[j]
.trim();
const value = values[j]
.trim();
obj[key] = value;
}
jsonData.push(obj);
}
return JSON.stringify(jsonData);
}
const csvData = "name,age,city
Alice,30,New York
Bob,25,London";
const jsonData = csvToJson(csvData);
console.log(jsonData);
输出
[{"name":"Alice","age":"30","city":"New York"},{"name":"Bob","age":"25","city":"London"}]
使用正则表达式
这种高级方法使用 正则表达式 来处理复杂的 CSV 解析情况,包括特殊字符、值内的逗号以及复杂的拆分需求。正则表达式就像侦探一样,识别 CSV 数据中的特定模式(如逗号、引号值和转义符),从而能够精确地提取单个值。
示例: 使用正则表达式将 CSV 转换为 JSON:一个综合示例。
function csvToJsonRegex(csvString) {
// 定义正则表达式以处理引号内的逗号
const regex = /,(?=(?:[^"]*"[^"]*")*(?![^"]*"))/;
const rows = csvString
.split("
");
const headers = rows[0]
.split(regex);
const jsonData = [];
for (let i = 1; i < rows.length; i++) {
const values = rows[i]
.split(regex);
const obj = {};
for (let j = 0; j < headers.length; j++) {
obj[headers[j]
.trim()] = values[j]
.trim();
}
jsonData.push(obj);
}
return JSON.stringify(jsonData);
}
const csvData = "name,age,city
Alice,30,New York
Bob,25,London";
const jsonData = csvToJsonRegex(csvData);
console.log(jsonData);
输出
[{"name":"Alice","age":"30","city":"New York"},{"name":"Bob","age":"25","city":"London"}]
使用第三方库
这种方法利用 Papa Parse 等第三方库,通过预构建的工具简化 CSV 转换过程。这些库专门用于高效解析,能够处理各种分隔符、引号和错误。它们简化了流程,并提供了数据类型转换等附加功能。
运行语法:
npm i papaparse
示例: 演示如何使用 Papa Parse 第三方库将 CSV 文件转换为 JSON。
const Papa = require("papaparse");
const csvData = "name,age,city
Alice,30,New York
Bob,25,London";
Papa.parse(csvData, {
header: true,
complete: function(results) {
console.log(results.data);
},
});
输出: