我想创建一个接收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]);
答案 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