逐行读取.json文件

时间:2013-07-26 14:06:10

标签: node.js

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

我的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);
    });
    });

我的代码错误地说“意外令牌{”就在第二行“,坦克

// EDIT 原来我的Json文件无效,因为readFile读取整个文件,我通过将对象放在一个数组中来改变它:

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 个答案:

答案 0 :(得分:6)

Node的内置require函数可以自动读取JSON并将其转换为对象(或数组),所以您只需要:

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

另外,FYI文件扩展名是可选的,因此您不必知道或关心这是.js.json还是节点可能学习将来加载的任何其他扩展名。