问题 JS对象为JSON字符串? [重复]


这个问题在这里已有答案:


9926
2018-05-07 11:00


起源



答案:


Crockford库中有两种示例方法(由@Anonymous提出):

JSON字符串到对象:

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

// value

对象为JSON字符串:

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

//{ "property":"value" }

在大多数主要框架中还有内置方法可以执行此操作。


12
2018-05-07 11:26



图书馆在 json.org/json.js - Keith
@Jason T Featheringham Waow Mr.Json 在这里自己编辑问题:) - Owais Qureshi


答案:


Crockford库中有两种示例方法(由@Anonymous提出):

JSON字符串到对象:

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

// value

对象为JSON字符串:

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

//{ "property":"value" }

在大多数主要框架中还有内置方法可以执行此操作。


12
2018-05-07 11:26



图书馆在 json.org/json.js - Keith
@Jason T Featheringham Waow Mr.Json 在这里自己编辑问题:) - Owais Qureshi


Quoth Crockford(http://www.json.org/js.html):

要将JSON文本转换为对象,   你可以使用eval()函数。   eval()调用JavaScript   编译器。因为JSON是合适的   JavaScript的子集,编译器   将正确解析文本和   产生一个对象结构。文本   必须用parens包裹以避免   嘲笑中的歧义   JavaScript的语法。

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

评估功能非常快。   但是,它可以编译和执行   任何JavaScript程序,所以可以   是安全问题。使用eval是   在信任源时指示   并且胜任。使用起来更安全   一个JSON解析器。 ...

为了防御这个,JSON解析器   应该使用。 JSON解析器会   只识别JSON文本,拒绝   所有脚本。在提供的浏览器中   本机JSON支持,JSON解析器   也比eval快得多。它是   期望本机JSON支持   包含在下一个ECMAScript中   标准。

var 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字符串化方向相反,将JavaScript数据结构转换为JSON文本。 JSON不支持循环数据结构,因此请注意不要为JSON字符串提供循环结构。

var myJSONText = JSON.stringify(myObject,replacer);

循环数据结构和没有有效序列化的对象显然是那里唯一的重要警告。


2
2018-05-07 11:05





值得一提的是Anonymous的链接(http://www.json.org/js.html)因为页面会指向正确的方向  包括有关如何将JavaScript数据结构字符串化为JSON文本的信息:

JSON字符串化方向相反,将JavaScript数据结构转换为JSON文本。

特别是,在页面底部查找指向开源JSON解析器和JSON字符串的链接。


0
2018-05-07 11:25