2012-11-13 51 views
0

我想製作一個接收json對象和路徑的簡單應用程序。其結果是,路徑的值,例如:nodejs json動態屬性

node {"asd":{"qwe":"123", "ert":"465"}} asd.qwe 

應該返回我:123

我使用這個:

var result = JSON.parse(jsonToBeParsed); 
console.log(result["asd"]["qwe"]); 

但我希望能夠得到的值與字符串dinamically。 有沒有辦法做這樣的事情? :

var result = JSON.parse(jsonToBeParsed); 
var path = "asd.qwe" //or whatever 
console.log(result[path]); 

回答

2
var current = result, 
    path = 'asd.qwe'; 

path.split('.').forEach(function(token) { 
    current = current && current[token]; 
}); 

console.log(current);// Would be undefined if path didn't match anything in "result" var 

編輯

current && ...目的是這樣,如果current未定義(由於無效的路徑)的腳本將不會嘗試評估undefined["something"]這將拋出一個錯誤。但是,我剛剛意識到if current碰巧是虛假的(即false或零或空字符串),因此無法查找token中的屬性。所以可能檢查應該是current != null

ANOTHER編輯

這裏有一個更好的,慣用的方式來做到這一點的一條線,使用Array.reduce() method

path.split('.').reduce(
    function(memo, token) { 
    return memo != null && memo[token]; 
    }, 
    resultJson 
); 

這也是更好,因爲它不需要任何var小號

+0

它工作完美,謝謝! – Federico

+0

乾杯。我增加了另一個解它好多了。 – meetamit