协慌网

登录 贡献 社区

将 JS 对象转换为 JSON 字符串

如果我用 JS 定义了一个对象:

var j={"name":"binchen"};

如何将对象转换为 JSON?输出字符串应为:

'{"name":"binchen"}'

答案

所有当前的浏览器都内置了原生 JSON 支持。因此,只要您不处理像 IE6 / 7 这样的史前浏览器,您就可以轻松地执行此操作:

var j={"name":"binchen"};
JSON.stringify(j); // '{"name":"binchen"}'

随着JSON.stringify()中发现的json2.js或大部分现代浏览器本地。

JSON.stringify(value, replacer, space)
        value       any JavaScript value, usually an object or array.

       replacer    an optional parameter that determines how object
                    values are stringified for objects. It can be a
                    function or an array of strings.

       space       an optional parameter that specifies the indentation
                    of nested structures. If it is omitted, the text will
                    be packed without extra whitespace. If it is a number,
                    it will specify the number of spaces to indent at each
                    level. If it is a string (such as '\t' or ' '),
                    it contains the characters used to indent at each level.

       This method produces a JSON text from a JavaScript value.

查看更新 / 更好的方式:

2008 年 5 月 17 日更新:添加到 toObject 方法的小型消毒剂。 现在,如果字符串中发现任何恶意代码,toObject()将不会 eval()该字符串。为了更加安全:不要将 includeFunctions 标志设置为 true。

JSON 概念之父 Douglas Crockford 编写了 JavaScript 的第一个字符串之一。后来,Trim Path 的 Steve Yen 编写了一个很好的改进版本,我已经使用了一段时间。这是我对 Steve 的版本的修改,我想与你分享。基本上他们源于我想要制作弦乐器:

• handle and restore cyclical references  
• include the JavaScript code for functions/methods (as an option)  
• exclude object members from Object.prototype if needed.