Javascript 从CSV文件读取JSON将返回一个空数组
我有一个函数,它将json对象打印为字符串:Javascript 从CSV文件读取JSON将返回一个空数组,javascript,json,node.js,csv,Javascript,Json,Node.js,Csv,我有一个函数,它将json对象打印为字符串: GetAllArticles: (req, res) => { var allArticles = getAllArticles(); res.setHeader("Content-Type", 'application/json'); res.write(JSON.stringify(allArticles)); //cast object to string res.en
GetAllArticles: (req, res) => {
var allArticles = getAllArticles();
res.setHeader("Content-Type", 'application/json');
res.write(JSON.stringify(allArticles)); //cast object to string
res.end();
}
以下是我的getAllArticles:
function getAllArticles() {
var result = [];
result.push(new Article('Gummistiefel', 100, 34.99));
result.push(new Article('Regenmantel', 10, 124.99));
result.push(new Article('HTML5 Buch', 25, 4.99));
//creates a test file
var json2csv = require('json2csv');
var fs = require('fs');
var fields = ["articleName", "quantity","price"];
var csv2 = json2csv({ data: result, fields: fields });
fs.writeFile('file.csv', csv2, function (err) {
if (err) throw err;
console.log('file saved');
});
result = [];//clear the array to save new articles
//load file
const csvFilePath = 'file.csv'
const csv = require('csvtojson')
csv()
.fromFile(csvFilePath)
.on('json', (jsonObj) => {
result.push(jsonObj);
})
.on('done', (error) => {
console.log('end');
})
return result;
}
第条:
function Article(articleName, quantity, price) {
this.articleName = articleName;
this.quantity = quantity;
this.price = price;
}
网页上的输出为:[]
因此,我检查了加载的jsonObject是否在数组中,它们是否在数组中,但在我将它们转换为字符串后,输出仅为“[]” 这是一个经典的异步代码 您需要更改GetAllarticle
function getAllArticles() {
return new Promise((resolve) => {
var result = [];
result.push(new Article('Gummistiefel', 100, 34.99));
result.push(new Article('Regenmantel', 10, 124.99));
result.push(new Article('HTML5 Buch', 25, 4.99));
//creates a test file
var json2csv = require('json2csv');
var fs = require('fs');
var fields = ["articleName", "quantity","price"];
var csv2 = json2csv({ data: result, fields: fields });
fs.writeFile('file.csv', csv2, function (err) {
if (err) throw err;
console.log('file saved');
result = [];//clear the array to save new articles
//load file
const csvFilePath = 'file.csv'
const csv = require('csvtojson')
csv()
.fromFile(csvFilePath)
.on('json', (jsonObj) => {
result.push(jsonObj);
})
.on('done', (error) => {
resolve(result);
})
});
})
}
还有你的路线
GetAllArticles: (req, res) => {
getAllArticles().then((result) => {
res.setHeader("Content-Type", 'application/json');
res.write(JSON.stringify(result)); //cast object to string
res.end();
});
}
验证stringify之前的所有项目中是否包含对象。为什么会标记为asp net web-api@Alex对不起,是我的错。我编辑了它。。很明显,在allArticles中,由于长度未定义,因此为空。我在上打印了结果数组(“完成”),它打印了3篇文章,但当我返回时,所有的文章都是undefined@Gururaj很明显,它不是,但是返回的数组…@KeyNavas-它的总和不正确。如果注释掉将数组重置回空的行,会发生什么。函数中的最后一条return语句应该告诉您返回的内容。