nodejs json动态属性

时间:2012-11-13 22:10:43

标签: json node.js parsing

我想创建一个接收json对象和路径的简单应用程序。结果是该路径的值,例如:

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

应该给我回复:123

我正在使用它:

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

但我希望能够用字符串获取值。 有没有办法做这样的事情? :

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

1 个答案:

答案 0 :(得分: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

另一个编辑

这是使用Array.reduce() method在一行中更好,惯用的方法:

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

这也更好,因为它不需要任何var s