JS对象到JSON字符串? [复制]
Posted
技术标签:
【中文标题】JS对象到JSON字符串? [复制]【英文标题】:JS object to JSON string? [duplicate] 【发布时间】:2010-10-24 10:59:21 【问题描述】:如何在 javascript 函数中将 JavaScript 对象转换为 JSON 字符串?我需要将 JSON 字符串传递给 JSP 页面。
【问题讨论】:
【参考方案1】:Crockford 的库中有两个示例方法(由@Anonymous 提出):
JSON 字符串到对象:
var obj = JSON.parse(' "property":"value" ');
alert (obj.property);
// value
对象到 JSON 字符串:
var str = JSON.stringify( "property":"value" )
alert (str);
// "property":"value"
在大多数主要框架中也有内置方法来执行此操作。
【讨论】:
库json.org/json.js @Jason T Featheringham WaowMr.Json
本人在这里编辑问题:)【参考方案2】:
Quoth Crockford (http://www.json.org/js.html):
要将 JSON 文本转换为对象, 您可以使用 eval() 函数。 eval() 调用 JavaScript 编译器。由于 JSON 是正确的 JavaScript 的子集,编译器 将正确解析文本并 产生一个对象结构。文本 必须用括号包裹以避免 因模棱两可而绊倒 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);
没有有用序列化的循环数据结构和对象显然是唯一需要注意的地方。
【讨论】:
【参考方案3】:值得一提的是,Anonymous 的链接 (http://www.json.org/js.html) 将为您指明正确的方向,因为该页面还包含有关如何将 JavaScript 数据结构字符串化为 JSON 文本的信息:
JSON stringifier 则相反,将 JavaScript 数据结构转换为 JSON 文本。
特别是,在页面底部查找指向开源 JSON 解析器和 JSON 字符串化器的链接。
【讨论】:
以上是关于JS对象到JSON字符串? [复制]的主要内容,如果未能解决你的问题,请参考以下文章