2009-11-10 56 views
3

我有一個json字符串即時消息轉換爲一個簡單的eval(字符串)對象;訪問帶有怪異字符的Json字段

heres the sample of the json string: 
var json = @' 
"{ description" : { "#cdata-section" : "<some html here>" } } 
'; 
var item = eval('('+json+')'); 

我試圖訪問它像這樣

item.description.#cdata-section 

我的問題是,JavaScript不喜歡#字段名..有訪問它的方法嗎?

回答

11
item.description['#cdata-section'] 
+0

謝謝!我以前曾嘗試item.description [1]但無濟於事。 – Will 2009-11-10 18:30:45

1

雖然JSON官方規範規定只是爲字符作爲一個字段標識提供,當您分析您的JSON成一個JavaScript對象,你現在歸入一個Javascript標識的限制。

在Javascript規範中,標識符可以以字母,下劃線或$開頭。隨後的字符可以是任何字母,數字,下劃線或$。

所以基本上,#在JSON規範下有效,但在Javascript下沒有。

5

請記住,所有Javascript對象只是下面的哈希表,所以您可以隨時訪問帶有下標符號的元素。

只要元素名稱會導致點符號出現問題(例如使用可變元素名稱或具有奇怪字符的元素等),則只需使用字符串。

var cdata = item.description["#cdata-section"];