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

时间:2016-05-15 19:57:40

标签: 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));

如果我做一个console.log(内容),事情看起来不错。我看到了json文件的内容。我试图迭代每个对象,但我不知道该怎么做。我尝试过使用

for(var doc in content)

但是文档不是我期望的每个对象。如何循环内容以获得json格式的每个对象,以便我可以解析它?

3 个答案:

答案 0 :(得分:1)

如果 content 是一个数组,你可以使用




  content.forEach(function(obj,index){/ *您的代码* /})
  




请参阅 Array.prototype.forEach()




答案 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);
    };
});