解析包含多个对象的JSON文件

解析包含多个对象的JSON文件,json,node.js,Json,Node.js,我有一个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)); 如果我

我有一个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));
如果我做一个控制台。日志(内容)的事情看起来不错。我看到了json文件的内容。我试图迭代每个对象,但我不确定如何做到这一点。我试过使用

for(var doc in content)

但医生并不像我想象的那样,每件物品都有。如何循环内容以获取json格式的每个对象,以便对其进行解析?

如果
内容
是一个数组,则可以使用

content.forEach(function (obj, index) { /* your code */ })

如果只需要迭代,forEach循环或normal for循环都可以工作,请参见文档:

for(var i = 0; i<content.length(); i++){
//perform whatever you need on the following object
var myobject  = content[i];
}

for(var i=0;i取决于文件,当前的两个答案(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);
    };
});

我认为您的JSON语法不好,您确定它是真实的文件,并且JSON.parse没有抛出任何错误吗?它不是有效的JSON,但它是一种常见的JSON流格式。这是否回答了您的问题?您不需要使用异步库来循环array@simon-p-r:当然可以,但现在已经晚了,我不确定这个词的语法是否正确
array.map
/
forEach
,而使用async,我确信脚本即使不是最优的,也是功能正常的。这与我在阅读问题标题时所寻找的方向有关。不幸的是,搜索
}
的解决方案对于大多数结构来说太基本了