我有一个JSON文件,其中包含多个具有相同结构的对象:
{
"id": "123",
"type": "alpha"
}
{
"id": "321",
"type": "beta"
}
我正在使用node.js来读取文件。
fs.readFile(__dirname + "/filename.json", 'utf8', function(err, data) {
var content = JSON.parse(JSON.stringify(data));
如果我做一个console.log(内容),事情看起来不错。我看到了json文件的内容。我试图迭代每个对象,但我不知道该怎么做。我尝试过使用
for(var doc in content)
但是文档不是我期望的每个对象。如何循环内容以获得json格式的每个对象,以便我可以解析它?
答案 0 :(得分:1)
如果 content
是一个数组,你可以使用
content.forEach(function(obj,index){/ *您的代码* /})



 

答案 1 :(得分:0)
如果你需要迭代,forEach循环将起作用或正常for循环:
{{1}}
答案 2 :(得分:-1)
取决于文件,当前的两个答案(Osama和Daniel)假设你有一个JSON数组:
[
{
"id": "123",
"type": "alpha"
},
{
"id": "456",
"type": "beta"
}
]
在这种情况下,您可以使用任何数组迭代器:
var async = require('async'),
content = require(__dirname + "/filename.json");
async.each(content, function (item, callback) {
//...
});
但是在你的情况下,似乎不是JSON(没有括号来表示数组,也没有用来分隔对象的逗号),所以在JSON.parse
没有引起任何错误的情况下,你需要首先隔离你的对象:
var fs = require('fs'),
async = require('async');
fs.readFile(__dirname + "/filename.notjson", 'utf8', function(err, data) {
var content = data.split('}');
async.map(content, function (item, callback) {
callback(null, JSON.parse(item));
}, function (err, content) {
console.log(content);
};
});