2013-07-26 104 views
1

我有一个json文件,其中包含json对象,请如何逐行读取json对象。这是使用Node.js的读取JSON文件,请原谅我的问题,只是一个node.js的新手的最佳方式逐行读取.json文件

我的JSON文件只包含JSON对象的行为:

file.json 
{"name":"user1"}, 
{"name":"user2"}, 
{"name":"user3"} 

和我试图读取与

app.get('/s',function(req,res){ 
    var fs = require('fs'); 
var file = __dirname + '/file.json'; 


    fs.readFile(file, 'utf8', function (err, data) { 
     if (err) { 
     console.log('Error: ' + err); 
     return; 
     } 

     data = JSON.parse(data); 

     console.dir(data); 
    }); 
    }); 

我得到的代码,说:“意外的标记{”只是在第二行”错误的文件,坦克

//编辑 它转

file.json 
[ 
{"name":"user1"}, 
{"name":"user2"}, 
{"name":"user3"} 
] 

那么这个代码读取整个文件(阵列)

var fs = require('fs'); 
var file = __dirname + '/file.json'; 

fs.readFile(file, 'utf8', function (err, data) { 
    if (err) { 
    console.log('Error: ' + err); 
    return; 
    } 

    data = JSON.parse(data); 

    data.forEach(function(user){ 
    console.log(user.name); 
    }) 

}); 
+1

您的JSON无效。 'readFile'读取整个文件。如果你想要有效的JSON,你需要用'[]''[{“name”:“user1”},{“name”:“user2”},{“name”:“user3”}]包装你的列表' –

+0

我编辑了问题并在那里回答(代表<10),谢谢 –

+0

这个问题似乎是无关紧要的,因为它是关于无效的json –

回答

4

节点的:编出我的JSON文件是无效的,因为READFILE读取整个文件,我通过将对象的数组改变了它内置require功能可以读取JSON,它会自动转换为对象(或数组)你,所以你需要的是:

var users = require(__dirname + '/file.json'); 

而且FYI文件扩展名是可选的,因此您不必知道或关心这是否为.js.json或节点未来可能学会加载的任何其他扩展。