Node.js:将CSV转换为JSON并将其保存在变量中

时间:2016-12-04 13:40:26

标签: javascript json node.js csv

所以我将此代码作为基础,我必须使用它将“world_data.csv”的内容转换为JSON。

我对如何在变量中保存JSON没有任何线索。我想我想要的数据暂时存储在“jsonArray”中,但是如何定义一个全局变量来无限地存储该数据呢?

var express = require('express');
var app = express();
var sys = require('util');
var path = require('path');
var bodyParser = require('body-parser');
var Converter = require("csvtojson").Converter;
app.use( bodyParser.json() );
app.use( express.static( path.join(__dirname, "public") ) );

var converter = new Converter({});

converter.on("end_parsed", function (jsonArray) {
    console.log(jsonArray);
});

require("fs").createReadStream("world_data.csv").pipe(converter);

var server = app.listen(3000, function () {
    var host = server.address().address;
    var port = server.address().port;
    console.log('Example app listening at http://%s:%s', host, port);
});

2 个答案:

答案 0 :(得分:0)

您只需要一个全局变量。请阅读Javascript Closures

var express = require('express');
var app = express();
var sys = require('util');
var path = require('path');
var bodyParser = require('body-parser');
var Converter = require("csvtojson").Converter;
var jsonContent = {}; // <-- Your Global JSON Data
app.use(bodyParser.json());
app.use(express.static(path.join(__dirname, "public")));

var converter = new Converter({});

converter.on("end_parsed", function(jsonArray) {

    if (jsonArray) {

        jsonContent = jsonArray

    }

});

require("fs").createReadStream("world_data.csv").pipe(converter);

var server = app.listen(3000, function() {

    var host = server.address().address;
    var port = server.address().port;
    console.log('Example app listening at http://%s:%s', host, port);

});

答案 1 :(得分:0)

取决于您想要的解析结果,例如将其传递给视图:

app.get('/', function(req, res) {
  require("fs").createReadStream("./world_data.csv").pipe(converter);
  converter.on("end_parsed", function (json) {
      res.json(json)
  });
});

csvtojson 提供api和hook时,您可以在解析过程完成时调用所需的任何内容。

或者您可以使用可以实现的oneliner:

app.get('/', function(req, res) {  
  require("fs").createReadStream("./world_data.csv").pipe(new Converter({constructResult:false})).pipe(res)
})