javascript - 如何使用 Node.js 将 CSV 文件转换为 JSON 脚本?

标签 javascript json node.js csv

test.csv 文件具有:

"Id","UserName","Age"
"01","Sam Smith","33"
"02","Fred Frankly","44"
"03","Zachary Zupers","55"

期望的输出:作为 Json 文件

[{"id":01,"User Name": " Sam Smith", "Age":"33"},
{"id":03,"User Name": " Fred Frankly", "Age":"44"}
{"id":03,"User Name": "Aachary Zupers", "Age":"55"}
]

我尝试使用node.js来解决这个问题

var fs = require("fs");

var data = fs.readFileSync('test.csv');
var stringData=data.toString();

console.log(stringData);
var arrayOne= stringData.split('\r\n');

var header=arrayOne[0].split(',');
var noOfRow=arrayOne.length;
var noOfCol=header.length;

var jArray=[];

var i=0,j=0;
for (i = 1; i < noOfRow-1; i++) {

    for (j = 0; j< noOfCol; j++) {

        var myNewLine=arrayOne[i].split(',');
        jArray.push( '{'+header[j]+':'+myNewLine[j]+'}');               
    };
};

console.log( jArray);

这是我运行上述代码时得到的输出: output Image 在上面的代码中我只是尝试在 json 脚本中显示。但如果你能做到的话。请提供将显示的输出转换为 .json 文件的代码。

请帮助我,我将感激你。

最佳答案

正如 ShanShan 提到的,您可以在实际项目中利用外部库来实现此目的,但我对您的代码进行了一些修改,这些修改应该可以满足您的需求,以防您将其作为学习体验。

我试图使代码大致相同。有两个主要变化。首先,我不是用内容构造一个字符串,而是创建一个对象来存储您对每行感兴趣的数据。因为该对象位于每行级别,所以它位于处理行的外部循环中。其次,我删除了标题和值文本(引号)的第一个和最后一个字符。因为您将 CSV 解释为字符串并基于该字符串进行拆分,所以它仍然包含引号。在现实世界中,您可能想使用正则表达式或替换函数来提取它,但我试图保持简单,因此它使用子字符串。

代码如下:

var fs = require("fs");

var data = fs.readFileSync('test.csv');
var stringData=data.toString();

console.log(stringData);
var arrayOne= stringData.split('\r\n');

var header=arrayOne[0].split(',');
var noOfRow=arrayOne.length;
var noOfCol=header.length;

var jArray=[];

var i=0,j=0;
for (i = 1; i < noOfRow-1; i++) {

    var obj = {};
    var myNewLine=arrayOne[i].split(',');

    for (j = 0; j< noOfCol; j++) {
        var headerText = header[j].substring(1,header[j].length-1);
        var valueText = myNewLine[j].substring(1,myNewLine[j].length-1);
        obj[headerText] = valueText;
    };
    jArray.push(obj);
};

console.log( jArray);

关于javascript - 如何使用 Node.js 将 CSV 文件转换为 JSON 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37086333/

相关文章:

javascript - 为什么 jquery 链接回调中的 'this' 是 DOM 元素?

javascript - 无法强制聚焦于输入

java - Spring Rest Controller PUT 方法请求主体验证?

node.js - Node.js 中的权限

javascript - decodeURIComponent 破坏路径

javascript - 连接字符串时如何引用数组元素?

javascript - 如何从序列化形式构建自定义对象?

python - 为什么在 JsonResponse 中使用非 dict 对象不好?

node.js - Nodejs Express-服务器的 get 方法获取 3 个参数

node.js - REST API 单元测试,并在 Node.js 中返回 Promise