2009-05-07 110 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