逐行读取.json文件

yke*_*kel 2 node.js

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

我的json文件只包含json对象行:

file.json
{"name":"user1"},
{"name":"user2"},
{"name":"user3"}
Run Code Online (Sandbox Code Playgroud)

我正在尝试阅读该文件

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);
    });
    });
Run Code Online (Sandbox Code Playgroud)

我得到一个错误的代码,说"意外的令牌{"只是在第二行",坦克

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

file.json
[
{"name":"user1"},
{"name":"user2"},
{"name":"user3"}
]
Run Code Online (Sandbox Code Playgroud)

然后这段代码读取整个文件(数组)

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

});
Run Code Online (Sandbox Code Playgroud)

Pet*_*ons 6

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

var users = require(__dirname + '/file.json');
Run Code Online (Sandbox Code Playgroud)

此外FYI文件扩展名是可选的,所以你不必知道或关心如果这是.js,.json或任何其他扩展该节点可以学会在未来的加载.