这个问题在这里已有答案:
- 将JS对象转换为JSON字符串 26个答案
起源
答案:
Crockford库中有两种示例方法(由@Anonymous提出):
JSON字符串到对象:
var obj = JSON.parse('{ "property":"value" }');
alert (obj.property);
// value
对象为JSON字符串:
var str = JSON.stringify({ "property":"value" })
alert (str);
//{ "property":"value" }
在大多数主要框架中还有内置方法可以执行此操作。
答案:
Crockford库中有两种示例方法(由@Anonymous提出):
JSON字符串到对象:
var obj = JSON.parse('{ "property":"value" }');
alert (obj.property);
// value
对象为JSON字符串:
var str = JSON.stringify({ "property":"value" })
alert (str);
//{ "property":"value" }
在大多数主要框架中还有内置方法可以执行此操作。
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);
循环数据结构和没有有效序列化的对象显然是那里唯一的重要警告。
值得一提的是Anonymous的链接(http://www.json.org/js.html)因为页面会指向正确的方向 也 包括有关如何将JavaScript数据结构字符串化为JSON文本的信息:
JSON字符串化方向相反,将JavaScript数据结构转换为JSON文本。
特别是,在页面底部查找指向开源JSON解析器和JSON字符串的链接。