JS对象为JSON字符串?

时间:2009-05-07 11:00:07

标签: javascript json jsp text

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

3 个答案:

答案 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字符串的链接。