JS对象为JSON字符串?

use*_*534 11 javascript text json jsp

如何在JavaScript函数中将JavaScript对象转换为JSON字符串?我需要将JSON字符串传递给JSP页面.

Kei*_*ith 14

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

JSON字符串到对象:

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

// value
Run Code Online (Sandbox Code Playgroud)

对象为JSON字符串:

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

//{ "property":"value" }
Run Code Online (Sandbox Code Playgroud)

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

  • @Jason T Featheringham Waow`Jr.Json`在这里自己编辑问题:) (2认同)

Ano*_*ous 2

引用克罗克福德(http://www.json.org/js.html):

要将 JSON 文本转换为对象,可以使用 eval() 函数。eval() 调用 JavaScript 编译器。由于 JSON 是 JavaScript 的真子集,因此编译器将正确解析文本并生成对象结构。文本必须用括号括起来,以避免 JavaScript 语法中出现歧义。

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

eval 函数非常快。然而,它可以编译并执行任何JavaScript程序,因此可能存在安全问题。当来源可信且有能力时,就会表明使用评估。使用 JSON 解析器要安全得多。...

为了防止这种情况,应该使用 JSON 解析器。JSON 解析器将仅识别 JSON 文本,拒绝所有脚本。在提供原生 JSON 支持的浏览器中,JSON 解析器也比 eval 快得多。预计下一个 ECMAScript 标准将包含原生 JSON 支持。

var myObject = JSON.parse(myJSONtext, reviver);

然后他在本文的其余部分中开发了 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);

循环数据结构和未有效序列化的对象显然是唯一需要注意的地方。