2012-08-13 121 views
1

我有以下的(片段)變量:JSON解析在JavaScript

var txt = { 
     'start': { 
       'name':'Call start', 
       'data': {'next':'start/e3fe40'}, 
       'id':'start', 
       'type':'standard---start' 
     }, 
     'e3fe40': { 
       'name':'Menu', 
       'data': {'next':'end/asd3rg'}, 
       'id':'e3fe40' 
     } 
}; 

我需要通過JSON解析,並從「e3fe40」分支獲取信息(不知道它怎麼會被稱爲

這裏是我?。

var nxt = txt.start.data.next.substr(6,10); <-- works 
console.log(nxt);       <-- works 
console.log(txt.start.data.next);   <-- works 
console.log(txt.nxt.name);     <-- nxt should contain 'e3fe40' 

所以,我怎麼走下來的一個分支 txt.nxt.name將無法正常工作,TXT {} NXT .NAME將無法正常工作等。 ...

感謝, 丹

+4

這不是JSON。它是一個JavaScript對象文字。 – Quentin 2012-08-13 16:33:06

+0

另外,如果我們選擇尼特,那麼你所做的不是「解析」。 :-)你需要'[]'運算符。 – Pointy 2012-08-13 16:33:57

+0

如果你不知道傳入數據的結構,你總是會很困難。你所能做的只是循環按鍵並試圖確定你想要的方式,但這遠非理想。 – Utkanos 2012-08-13 16:34:29

回答

2
var key = txt.start.data.next.substr(6); 
console.log(txt[key].name); 
0

假設nxt = "e3fe40"你這樣做獲得的價值。訪問的值的

txt[nxt].name

方式不同,

txt.e3fe40.name txt['e3fe40'].name和一個如上所示。

txt.nxt.name是錯誤的。因爲如果你使用的調試工具調試代碼,並把這個代碼NXT是不是在Javascript對象的關鍵,

0

我認爲這將解決您的問題

alert(txt.e3fe40.name);