我正在从一个简单的csv文件中读取数据,并使用Node JS fs将一些来自Web服务的数据添加到一个数组中。该数组定义为:
var allDataOut=[];
此时,代码中添加了数据:
var cumulate = {
"Details":augment,
"Timestamp": new Date(),
data:data
}
allDataOut.push(cumulate);
console.log(allDataOut);
callback(cumulate);
根据console.log,我正好看到了我所期望的,正确的数据位于表示数组的[]内。
因此,为了创建一个JSON,我希望JSON.stringify(allDataOut)会给我正确的结果。
console.log("writing file");
var str = JSON.stringify(allDataOut);
console.log("This is output .stringify" + str);
fs.appendFileSync(outputFile, str, encoding='utf8');
但正如您在下面的最终数据中所看到的那样,它仍然是数组格式。我在这个论坛上看到了很多关于这个主题的问题,其中一个建议是使用JSON.parse(JSON.stringify(allDataOut)); - 遗憾的是似乎没有任何改变输出。
[ {
"Details": {
"Name": "Tophat",
"SegmentID": "0",
"DistanceToDepot": "256.53"
},
"Timestamp": "2016-04-10T11:40:03.291Z",
"data": {
"metadata": {
"language": "en-US",
"transaction_id": "1460288403143:279662660",
"version": "1",
"Altitude": 49.44
},
"observation": {
"class": "observation",
"expire_time_gmt": 1460289003,
"metric": {
"wspd": 21,
"gust": null,
"vis": 9.7
}
}
} }, {
"Details": {
"Name": "Tophat",
"SegmentID": "25659",
"DistanceToDepot": "0"
},
"Timestamp": "2016-04-10T11:40:40.428Z",
"data": {
"metadata": {
"language": "en-US",
"transaction_id": "1460288440297:-647605523",
"version": "1",
"Altitude": 50.68
},
"observation": {
"class": "observation",
"expire_time_gmt": 1460288452,
"metric": {
"wspd": 18,
"gust": null,
"vis": 12.91
}
}
} } ]
答案 0 :(得分:0)
因此,为了适应读取数据的应用程序的性质,格式需要逐行获取数据。作为JSON的新手我相信这不会创建一个JSON数组本身,而是在文件中创建一系列JSON对象。并学习了如何在Node JS中进行EOL和迭代。 为实现这一点,我在stringify中添加了一个EOL,如下所示。
console.log("writing file");
for(var i in allDataOut)
{
fs.appendFileSync(outputFile, JSON.stringify(allDataOut[i]) + '\r\n', encoding='utf8');
}
console.log("done");