【发布时间】:2016-05-10 07:40:09
【问题描述】:
我正在从一个简单的 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
}
}
} } ]
【问题讨论】:
-
数据是有效的json有什么问题。您可能想要一个包含 json 数组的 JSON 对象。您可以在jsonformatter.curiousconcept.com 上验证 json
-
我看到的正是我所期望的正确数据位于 [] 内表示一个数组 然后 但正如您在下面的最终数据中看到的那样仍然是数组格式。你期待一个数组,但当你得到一个数组时你会感到惊讶?
-
感谢您的澄清。这是一个 json 数组,我认为 json.stringify 会逐行转换为一系列 json 对象。我被告知用于读取此文件的应用程序将读取一个 json 对象而不是数组。我将研究如何将 json 数组转换为 json 对象。