浏览器本地JSON支持(window.JSON)
我已经看到一些浏览器通过window.JSON
对象本地支持JSONparsing/序列化对象的安全和有效的window.JSON
,但细节很难得到。 任何人都可以指出正确的方向? 这个Object暴露的方法是什么? 它支持哪些浏览器?
所有现代浏览器都支持本地JSON编码/解码(Internet Explorer 8+,Firefox 3.1 +,Safari 4+和Chrome 3+)。 基本上, JSON.parse(str)
将parsingJSON.parse(str)
的JSONstring并返回一个对象,而JSON.stringify(obj)
将返回对象obj
的JSON表示。
有关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的好处是,如果浏览器还没有安装parsing器,它只会安装一个parsing器。 您可以保持与旧浏览器的兼容性,但如果可用,则使用本机JSONparsing器(这更安全,速度更快)。
具有原生JSON的浏览器:
- IE8 +
- Firefox 3.1+
- Safari 4.0.3+
- Opera 10.5+
G。
[扩展音乐评论]
如果您使用jQuery,请使用parseJSON
var obj = jQuery.parseJSON(data)
它在内部检查浏览器是否支持.JSON.parse和(如果可用)调用本地的window.JSON.parse。
如果没有,parsing自己。
为了这个线程的任何人的利益 – 一个支持JSON对象的最新的,最终的浏览器列表看看这里。 。 一个简短的通用答案 – 几乎所有的浏览器,在2013年+真正重要。