首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >csvtojson node.js (组合两个代码)

csvtojson node.js (组合两个代码)
EN

Stack Overflow用户
提问于 2021-09-20 11:49:25
回答 2查看 129关注 0票数 2

如何将这两个代码组合在一起,这样它不仅可以将csv转换为Json (第一个代码),还可以将其保存为一个额外的文件中的json数组?(第二个代码)这个(第一个)代码将csv文件转换为json数组:

代码语言:javascript
复制
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数组保存到外部文件:

代码语言:javascript
复制
fs.writeFile('example.json', JSON.stringify(dataObj, null, 4);

问题是如何将第二个代码放入第一个代码中(组合它们)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-04 19:18:02

您可以使用.on('done',(error)=>{ ... })方法。(csvtojson)。在subscribe方法中将数据推送到变量中,并在.on('done')中将数据写为JSON。(测试成功)。

看看这个:

代码语言:javascript
复制
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))
  })
票数 1
EN

Stack Overflow用户

发布于 2021-10-11 11:38:34

不确定您是否能够更改库,但我绝对建议您使用Papaparse https://www.npmjs.com/package/papaparse

然后,您的代码将如下所示:

代码语言:javascript
复制
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
                })
            }
        });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69253936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档