通过变量访问嵌套Javascript JSON属性

通过变量访问嵌套Javascript JSON属性,javascript,json,variables,properties,nested,Javascript,Json,Variables,Properties,Nested,假设我有一个配置文件,其中有指向JSON属性的路径。我的JSON看起来像: var test = { test: { test2: { test3: 1 } } } 我有一个字符串str=“test.test2.test3” 我知道我可以像这样访问顶层:var foo=“test”,test[foo] 但是test[“test.test2.test3”]不起作用。另一方面,test[“test”][“test2”][“test3”]可以工作,但是如果我有更复杂的对象(有些可以是5级,有些可以是

假设我有一个配置文件,其中有指向JSON属性的路径。我的JSON看起来像:

var test = { test: { test2: { test3: 1 } } }
我有一个字符串
str=“test.test2.test3”

我知道我可以像这样访问顶层:
var foo=“test”,test[foo]

但是
test[“test.test2.test3”]
不起作用。另一方面,
test[“test”][“test2”][“test3”]
可以工作,但是如果我有更复杂的对象(有些可以是5级,有些可以是3级等等),那么这不是一个单行程序

有没有办法直接访问此属性,而不是在点上拆分并循环访问

with(test) eval(str);
有人的头爆炸了吗

不是那样就是那样

eval('test.' + str);
从糟糕的练习篮中挑选你的球

但是对于第一个例子,如果你真的想要这个值,你应该这样做

var value;
with(test) value = eval(str);
但这种做法让这部糟糕的杰作失去了纯洁性

有人的头爆炸了吗

不是那样就是那样

eval('test.' + str);
从糟糕的练习篮中挑选你的球

但是对于第一个例子,如果你真的想要这个值,你应该这样做

var value;
with(test) value = eval(str);

但这种做法让这部糟糕的杰作失去了纯洁性。

这不是JSON,而是JavaScript对象文字。JSON是一种基于JavaScript子集的数据格式(该代码不符合该子集)。这不是JSON,而是JavaScript对象文本。JSON是一种基于JavaScript子集的数据格式(代码不符合JavaScript)。啊,谢谢,出于这些原因,eval完全忘记了。我还没看过,所以很有趣。啊,谢谢,eval完全忘记了,正是因为这些原因。我还没看过,所以很有意思。