为npm csvtojson创建输出

时间:2016-07-20 15:43:13

标签: json node.js csv

我试图读取我的.CSV文件,并使用npm' s csvtojson

输出.json文件

我使用以下代码:

//Converter Class 
var Converter = require("csvtojson").Converter;
var converter = new Converter({});
var fs = require("fs");

//end_parsed will be emitted once parsing finished 
converter.on("end_parsed", function (jsonArray) {
    console.log(jsonArray); //here is your result jsonarray 
});

fs.createReadStream('data.csv')
    .pipe(csv2json({
        // Defaults to comma. 
        separator: '|'
    }))
    .pipe(fs.createWriteStream('dataOut.json'));

但是,我遇到了错误" csv2json未定义"

有人知道我为什么会遇到这个错误,尽管包括" csvtojson"在第一行?

1 个答案:

答案 0 :(得分:1)

cvs2json在代码中的任何位置 都未定义。 cvs2json(来自https://github.com/julien-f/csv2json)的套用示例是:

var csv2json = require('csv2json');
var fs = require('fs');

fs.createReadStream('data.csv')
  .pipe(csv2json({
    // Defaults to comma.
    separator: ';'
  }))
  .pipe(fs.createWriteStream('data.json'));

所以简单的答案是将第一行更改为var csv2json = require('csv2json');。但是,这会导致您尝试触发end_parse事件时出错。要收听该事件,请使用节点流事件:

var stream = fs.createReadStream('data.csv')
    .pipe(csv2json({
        // Defaults to comma. 
        separator: '|'
    }));
stream.on('end', function (jsonArray) {
    console.log(jsonArray); //here is your result jsonarray 
});
stream.pipe(fs.createWriteStream('dataOut.json'));