2013-07-26 262 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或節點未來可能學會加載的任何其他擴展。