如何在JavaScript函数中将JavaScript对象转换为JSON字符串?我需要将JSON字符串传递给JSP页面。
答案 0 :(得分:14)
Crockford的库中有两种示例方法(由@Anonymous提出):
对象的JSON字符串:
var obj = JSON.parse('{ "property":"value" }');
alert (obj.property);
// value
对象到JSON字符串:
var str = JSON.stringify({ "property":"value" })
alert (str);
//{ "property":"value" }
在大多数主要框架中也有内置方法可以做到这一点。
答案 1 :(得分:2)
Quoth Crockford(http://www.json.org/js.html):
要将JSON文本转换为对象, 你可以使用eval()函数。 eval()调用JavaScript 编译器。因为JSON是合适的 JavaScript的子集,编译器 将正确解析文本和 产生一个对象结构。文本 必须用parens包裹以避免 嘲笑中的歧义 JavaScript的语法。
var myObject = eval('('+ myJSONtext + ')');
eval功能非常快。 但是,它可以编译和执行 任何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 :(得分:0)
值得一提的是,匿名链接( http://www.json.org/js.html)将指向正确的方向,因为页面还包含有关如何对JavaScript数据结构进行字符串化的信息进入JSON文本:
JSON字符串化方向相反,将JavaScript数据结构转换为JSON文本。
特别是,请在页面底部查找指向开源JSON解析器和JSON字符串的链接。