2011-03-23 97 views
0

說我有一個配置文件,其中有JSON屬性的路徑。我的JSON的樣子:通過變量訪問嵌套的Javascript 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等)

有什麼辦法直接訪問此屬性而不是分裂在點和循環?

+2

這不是JSON,它是一個JavaScript對象文字。 JSON是一種基於JavaScript子集(該代碼不符合)的數據格式。 – Quentin 2011-03-23 21:53:01

回答

4
with(test) eval(str); 

有沒有人的頭部爆炸?

它要麼或

eval('test.' + str); 

你選,從壞的做法籃筐。

雖然對於第一個例子,如果你真的想要的值你會想這樣做

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

但那種從這個壞習慣大作的純度帶走。

+0

啊謝謝,eval完全放棄了我的想法,因爲那些原因。我還沒有看到,所以這很有趣。 – 2011-03-24 16:43:06