我想通过动态构建的keypath访问嵌套的JSON字典。
keypath使用标准的JSON点和下标运算符。 (.
和[x]
)
例如:通过keypath从嵌套的JSON字典中获取值而不使用eval
var data =
{"title": "a_title",
"testList": [
{
"testListItemKey": "listitem1"
},
{
"testListItemKey": "listitem2",
"deepTestList": [
{
"testListItemKey": "listitem1",
"testListItemDict":{
"subTitle": "sub_title",
}
}]
}]
}
一个例子的keyPath字符串将是:
我发现迄今data.feedEntries[0].testList[2].deepTestList[1].testListItemDict.subTitle
最简单的工作的解决方案是使用eval或功能构造:
function valueForKeypPath(data, keyPath) {
"use strict";
var evaluateKeypath = new Function('data', 'return data.' + keyPath);
return evaluateKeypath(data);
}
因为我不能完全信任从远程端点收到的JSON数据,所以我想避免使用eval et.al 。
可能重复[在javascript中如何动态获取对象的嵌套属性(http://stackoverflow.com/questions/6906108/ in-javascript-how-can-i-dynamic-get-a-nested-property-of-an-object) – Quentin 2013-04-28 08:22:55
这已被问了很多次。 – user2246674 2013-04-28 08:27:49