0

我想制作一个接收 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]);
4

1 回答 1

3
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"]哪个会引发错误。但是,我刚刚意识到 ifcurrent恰好是假的(即false零或空字符串),这将无法在token. 所以可能检查应该是current != null

另一个编辑

这是一种更好的惯用方法,使用Array.reduce() 方法

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

var这也更好,因为它不需要 ANY

于 2012-11-13T22:27:32.670 回答