【发布时间】:2021-11-14 03:11:21
【问题描述】:
如何结合这两个代码,所以它不仅将 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);
问题是如何将第二个代码放入第一个代码中(组合它们)?
【问题讨论】:
-
第一个将 CSV 转换为 JSON,但是您的 JSON 输出在哪里?我假设它是
dataObj?那么在第一个代码中复制/粘贴第二个代码怎么样? -
我在这里复制了第二个代码:.subscribe((dataObj)=>,订阅就像循环一样工作,创建的 json 文件中的数组只是循环数组中的最后一个对象。
-
嗯,确实,我查看了文档,看起来订阅触发器在每个 CSV 行解析,所以
dataObj只是一个数据块。也许您需要手动将此块添加到对象中?库没有自动输出整个结果真的很奇怪o_O -
@JeremyThille,有没有伊迪亚?
标签: javascript node.js arrays json