2009-05-07 105 views

回答

2

答曰克羅克福德(http://www.json.org/js.html):

要將JSON文本轉換爲對象, 您可以使用eval()函數。 eval()調用JavaScript編譯器 。由於JSON JavaScript的一個適當的子集 ,編譯器將 正確地分析文本和 生成一個對象的結構。文本 必須被包裹在括號避免 絆倒在 JavaScript的語法歧義。

變種myObject的=的eval( '(' + myJSONtext + ')');

eval函數非常快。 但是,它可以編譯並執行任何JavaScript程序,所以有 可能是安全問題。 eval的使用是 ,當信源是可信的 並且勝任。使用JSON解析器使用 要安全得多。 ...

爲了防範這種情況,JSON解析器 應該被使用。一個JSON解析器將 只識別JSON文本,拒絕 所有腳本。在提供 原生JSON支持的瀏覽器中,JSON解析器的編碼速度比eval快得多,爲 。它是 預計本地JSON支持將 包括在下一個ECMAScript 標準。

變種myObject的= JSON.parse(myJSONtext, 齊磊);

然後他在文章的其餘部分開發了JSON原型。

Firefox 3和3.5中使用的Gecko版本本身支持JSON(https://developer.mozilla.org/En/JSON),如果您的項目僅限於最近的基於Gecko的應用程序,這可能會很有用。


正如指出的下面,關於文本發生器(未解析器)的有趣的部分是在https://github.com/douglascrockford/JSON-js/blob/master/json2.js並用

引入

甲JSON stringifier進入在相反的方向,轉換的JavaScript數據結構爲JSON文本。 JSON不支持循環數據結構,因此請小心不要給JSON字符串賦予循環結構。

變種myJSONText = JSON.stringify(myObject的,替換器);

循環數據結構和沒有用的序列化對象顯然是唯一的大警告。

0

值得一提的是匿名的鏈接(http://www.json.org/js.html)將指向您在正確的方向,因爲的頁面也包括有關如何字符串化一個JavaScript數據結構轉換爲JSON文本信息:

一個JSON stringifier相反,將JavaScript數據結構轉換爲JSON文本。

特別是,在頁面底部尋找指向開源JSON解析器和JSON字符串的鏈接。

12

有在Crockford的庫中有兩個樣品的方法(由@Anonymous如凸起):

JSON字符串爲對象:

var obj = JSON.parse('{ "property":"value" }'); 
alert (obj.property); 

// value 

對象到JSON字符串:

var str = JSON.stringify({ "property":"value" }) 
alert (str); 

//{ "property":"value" } 

有也建立在大多數主要框架中的方法中。

+0

圖書館在http://www.json.org/json.js – Keith 2009-05-07 11:27:21

+2

@Jason T Featheringham Waow'Mr.Json'在這裏自己編輯這個問題:) – 2013-05-27 04:44:34