2014-05-01 64 views
0

我試圖解析Node.js中的一些JSON。 JSON來自.json文件。由於Node的異步性質,我想我錯過了一些東西。但是,我不確定如何超越它。目前,我正在嘗試以下代碼:在Node.js中依次解析JSON

var results = null; 

// Read the .json file 
var file = __dirname + '/config.json'; 
fs.readFile(file, 'utf8', function (err, data) { 
    if (err) { 
    return; 
    } 

    results = JSON.parse(data); 
    console.log(results.count); 
}); 

// iterate through keys in results and print them out one at a time. 

每當我運行此代碼時,最後一個console.log行將打印'undefined'。出於這個原因,我甚至沒有嘗試通過密鑰迭代。但是,我知道我在正確加載以.json文件,因爲當我這樣做時,我看到預期的結果:

results = JSON.parse(data, function(k, v) { 
    console.log(k + ' : ' + v); 
}); 

這就是爲什麼我懷疑它是與節點的異步性質。但是,我不知道如何解決這個問題。

謝謝您的幫助。

+0

我會冒'count'不是頂級屬性 - 你能否提供一個例子'config.json'來重複這個問題? –

+0

在上面的代碼中打印未定義與異步無關。如果'結果===未定義',那麼它會崩潰與ReferenceError。既然沒有發生,那就意味着「結果」是一個對象。由於它打印未定義,所以'count'屬性沒有在'results'對象上定義。檢查你的JSON。 – Sukima

回答

0

只是爲了指出明顯你可能正在試圖用results.count做應該改爲:

Object.keys(results).length; 

但是,這不會給你包括獨生子女性能直接鍵的長度。