如何将这两个代码组合在一起,这样它不仅可以将csv转换为Json (第一个代码),还可以将其保存为一个额外的文件中的json数组?(第二个代码)这个(第一个)代码将csv文件转换为json数组:
const fs = require("fs");
let fileReadStream = fs.createReadStream("myCsvFile.csv");
let invalidLineCount = 0;
const csvtojson = require("csvtojson");
csvtojson({ "delimiter": ";", "fork": true })
.preFileLine((fileLineString, lineIdx)=> {
let invalidLinePattern = /^['"].*[^"'];/;
if (invalidLinePattern.test(fileLineString)) {
console.log(`Line #${lineIdx + 1} is invalid, skipping:`, fileLineString);
fileLineString = "";
invalidLineCount++;
}
return fileLineString
})
.fromStream(fileReadStream)
.subscribe((dataObj) => {
console.log(dataObj);
// I added the second code hier, but it wirtes the last object of the array (because of the loop?)
}
});第二段代码将json数组保存到外部文件:
fs.writeFile('example.json', JSON.stringify(dataObj, null, 4);问题是如何将第二个代码放入第一个代码中(组合它们)?
发布于 2021-10-04 19:18:02
您可以使用.on('done',(error)=>{ ... })方法。(csvtojson)。在subscribe方法中将数据推送到变量中,并在.on('done')中将数据写为JSON。(测试成功)。
看看这个:
let fileReadStream = fs.createReadStream("username-password.csv");
let invalidLineCount = 0;
let data = []
csvtojson({ "delimiter": ";", "fork": true })
.preFileLine((fileLineString, lineIdx)=> {
let invalidLinePattern = /^['"].*[^"'];/;
if (invalidLinePattern.test(fileLineString)) {
console.log(`Line #${lineIdx + 1} is invalid, skipping:`, fileLineString);
fileLineString = "";
invalidLineCount++;
}
return fileLineString
})
.fromStream(fileReadStream)
.subscribe((dataObj) => {
// console.log(dataObj)
data.push(dataObj)
})
.on('done',(error)=>{
fs.writeFileSync('example.json', JSON.stringify(data, null, 4))
})发布于 2021-10-11 11:38:34
不确定您是否能够更改库,但我绝对建议您使用Papaparse https://www.npmjs.com/package/papaparse
然后,您的代码将如下所示:
const fs = require('fs'), papa = require('papaparse');
var readFile = fs.createReadStream(file);
papa.parse(readFile, {
complete: function (results, file) {
fs.writeFile('example.json', JSON.stringifiy(results.data), function (err) {
if(err) console.log(err);
// callback etc
})
}
});https://stackoverflow.com/questions/69253936
复制相似问题