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/