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

在这篇文章中,我们将逐步讲解如何将 逗号分隔值 (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); 
  },
});

输出:

!Screenshot-2024-04-08-182513输出

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/52125.html
点赞
0.00 平均评分 (0% 分数) - 0