2010-03-26 159 views
0

我使用JSON數據,並通過jQuery的迭代,並顯示我的結果...在jquery中解析json的最有效方法是什麼?

使用firefoxvar jsonObj = JSON.parse(HfJsonValue);作品,但不是在IE6 ....

HfjsonValue是從返回JSON字符串我aspx code behind page ...所以我不使用AJAX ...任何建議,讓我的JSON解析更好,跨瀏覽器的一個...

+0

JSON是JavaScript Object Notation,它不需要在JS中解析。您可以開始將其用作常規對象。 – RaYell 2010-03-26 11:08:07

+0

@RaYell我試了一下......但那並沒有工作 – 2010-03-26 11:09:23

+0

你可能必須首先''eval()'JSON。 – 2010-03-26 11:14:51

回答

6

這大概:http://api.jquery.com/jQuery.parseJSON/

var obj = jQuery.parseJSON('{"name":"John"}'); 
alert(obj.name === "John"); 

......呃當然,這只是如果你想使用jQuery 1.4。 :)我認爲JSON內置功能對於實際嘗試實現標準的瀏覽器是一個相當新的補充。

編輯

正如跟進,你可以通過調用就可以了「EVAL」功能將一個JSON字符串轉換爲JavaScript對象:

var obj = eval('({"name":"John"})'); 
alert(obj.name === "John"); 

這應該給予同樣的結果作爲上面的jQuery parseJSON。不同之處在於JavaScript的「eval」函數會運行任何內部代碼,所以如果JSON的源代碼是外部網站或另一個不可信任的源代碼,那麼該源代碼可能會將惡意代碼注入到字符串中,您希望只包含JSON。

我相信有一個新的建議,瀏覽器實現內置的JSON解析,這將強制字符串上的JavaScript對象字面格式,這將提供一個安全的替代「eval」。

編輯2

從未真正使用eval處理JSON,我錯誤地以爲我的例子會工作。現在已經修復了附加的支架。

+0

@nick that worked ..因爲我只使用jquery ... – 2010-03-26 11:11:49

+0

@nick這是更快... – 2010-03-26 11:21:03

+0

你應該在括號內包括括號:'eval('({「name」:「John」})' );'如果你想要原始速度,'var obj = new Function('return {「name」:「John」}')'會最快。但請注意,jQuery.parseJSON會檢查JSON以確保它是有效的JSON;而不是惡意代碼。 '新功能'和'eval'方法都沒有。我會推薦jQuery.parseJSON。 – Matt 2010-03-26 11:41:01

相關問題