2016-12-04 71 views
0

因此,我將此代碼作爲基礎,並且必須使用它將「world_data.csv」的內容轉換爲JSON。Node.js:將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); 
}); 

回答

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); 

}); 
+0

非常感謝你,這是我搜索了:) – dun

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和鉤子,你可以調用任何你需要的解析過程完。

或者你可以使用oneliner可以實現爲:

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

我沒有任何線索,你那裏做什麼。我甚至不明白我的例子,因爲我幾乎從不使用JS。 – dun

+0

你想用解析的值做什麼?將它傳遞給前端還是傳遞給其他函數?當你打開(獲取)地址'http:// localhost:[port] /'時,當前版本顯示JSON –