通過一段JavaScript JSON對象是這樣的:JSON使用嵌套查詢字符串鍵在JavaScript
var data = {
blog : {
title: "my blog",
logo: "blah.jpg",
},
posts : [
{
title: "test post",
content: "<p>testing posts</p><br><p>some html</p>"
},
]
}
var lookup = "blog.title" //this gets generated from a template file
現在我知道你可以這樣做,但這些不太做什麼,我需要:
console.log(data['blog']); //works
console.log(data.blog.title); //works
console.log(data['blog']['title']); //works, but i dont know the depth of the lookup
但我需要能夠做下面的代碼,因爲我不能硬編碼結構,它會在每次查找時生成和存儲。我是否必須使用字符串切割和遞歸來構建此功能?我真的希望不要
console.log(data['blog.title']); //does not work
console.log(data[lookup]); //does not work
編輯....
好吧,可能找到了解決辦法。我不知道這是安全的還是推薦的做法,所以對此的評論會很棒。或者替代方法。所以把它和上面的代碼結合起來。
var evaltest = "var asdf ="+JSON.stringify(data)+";\n"
evaltest += "asdf."+lookup
console.log(eval(evaltest)) //returns correctly "my blog" as expected
通過'.'分割字符串,並通過對象鍵遞歸將會做到這一點。但它必須是這種JSON的某種模式,它不能被傾銷。 – Gntem