2011-07-19 45 views

回答

9

使用JSON JS

+3

這不是舊版瀏覽器中的本機庫。您需要明確地包含[圖書館](https://github.com/douglascrockford/JSON-js)以迎合他們。 – Spycho

+0

感謝您指出Spycho。 –

6

要將JSON文本轉換成一個對象,你可以使用eval()函數。 eval()調用JavaScript編譯器。由於JSON是JavaScript的一個真正的子集,因此編譯器將正確地解析文本並生成對象結構。文本必須包裝在parens中以避免跳出JavaScript語法中的歧義。

var myObject = eval('(' + myJSONtext + ')'); 
+2

這可能會很危險,因爲它會執行任意的JS。如果您的JSON是從用戶提交的內容中生成的,那麼您可能會面臨XSS攻擊。 – Spycho

+0

是的,當然,如果沒有適當的驗證,你不應該做任何事情...... –

+2

OP要求最快,據我們所知OP控制腳本標記後面的內容。雖然好評。 –

2
var myObject = eval('(' + myJSONtext + ')'); 
+0

eval函數非常快。但是,它可以編譯和執行任何JavaScript程序,因此可能存在安全問題。如果信息來源可信並且勝任,則會指示使用eval。使用JSON解析器更安全。在基於XMLHttpRequest的Web應用程序中,只允許與提供該頁面的源相同的通信,因此它是可信的。但它可能無法勝任。如果服務器的JSON編碼不嚴格,或者如果不嚴格驗證其所有輸入,那麼它可能會傳遞可能攜帶危險腳本的無效JSON文本。 – jinglesthula

1

採取了JSON字符串來自服務器,你可以嘗試JSONP技術。 JSON在瀏覽器中以快速方式進行本地解析,並且沒有任何庫。

例如:如果你的反應是{"name":"Peter"}

一個JSONP響應將是這樣的:yourFunction({"name":"Peter"})

yourFunction必須在頁面全局定義的功能,將接收呼叫,如:

function yourFunction(json){ 
    //do something with the JSON 
}