我已经看到一些浏览器本身通过window.JSON
Object 安全有效地支持JSON解析/序列化对象的引用,但细节很难得到.谁能指出正确的方向?此对象公开的方法有哪些?它支持哪些浏览器?
所有现代浏览器都支持本机JSON编码/解码(Internet Explorer 8 +,Firefox 3.1 +,Safari 4+和Chrome 3+).基本上,JSON.parse(str)
将解析JSON字符串str
并返回一个对象,并返回该对象JSON.stringify(obj)
的JSON表示obj
.
有关MDN文章的更多详细信息.
jQuery-1.7.1.js - 555行...
parseJSON: function( data ) { if ( typeof data !== "string" || !data ) { return null; } // Make sure leading/trailing whitespace is removed (IE can't handle it) data = jQuery.trim( data ); // Attempt to parse using the native JSON parser first if ( window.JSON && window.JSON.parse ) { return window.JSON.parse( data ); } // Make sure the incoming data is actual JSON // Logic borrowed from http://json.org/json2.js if ( rvalidchars.test( data.replace( rvalidescape, "@" ) .replace( rvalidtokens, "]" ) .replace( rvalidbraces, "")) ) { return ( new Function( "return " + data ) )(); } jQuery.error( "Invalid JSON: " + data ); } rvalidchars = /^[\],:{}\s]*$/, rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
使用json2.js的优点是,如果浏览器还没有解析器,它只会安装解析器.您可以保持与旧版浏览器的兼容性,但如果可用,则使用本机JSON解析器(更安全,更快).
使用Native JSON的浏览器:
IE8 +
Firefox 3.1+
Safari 4.0.3+
Opera 10.5+
G.
[扩展musicfreak评论]
如果您使用的是jQuery,请使用parseJSON
var obj = jQuery.parseJSON(data)
在内部,它检查浏览器是否支持.JSON.parse,并且(如果可用)调用本机window.JSON.parse.
如果没有,会解析自己.
为了任何遇到此线程的人的利益 - 对于支持JSON对象的最新,明确的浏览器列表,请查看此处..一个简短的通用答案 - 几乎所有的浏览器在2013年都非常重要.