Browser-native JSON support (window.JSON)
我看到过一些本机支持通过
所有现代浏览器都支持本机JSON编码/解码(Internet Explorer 8+、Firefox 3.1+、Safari 4+和Chrome 3+)。基本上,
有关MDN文章的更多详细信息。
jquery-1.7.1.js-555行…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | 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 = /"[^"\\ ]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, |
号
使用json2.js的好处是,只有在浏览器还没有解析器的情况下,它才会安装解析器。您可以保持与旧浏览器的兼容性,但如果可用,可以使用本机JSON解析器(它更安全、更快)。
具有本机JSON的浏览器:
- IE8+
- 火狐3.1+
- Safari 4.0.3版+
- 歌剧10.5+
G.
[扩展MusicFreak评论]
如果使用jquery,请使用parsejson
1 | var obj = jQuery.parseJSON(data) |
在内部,它检查浏览器是否支持.json.parse,并且(如果可用)调用本机window.json.parse。
如果没有,则不分析自身。
为了让任何一个运行这个线程的人受益——要获得支持JSON对象的最新的、确定的浏览器列表,请看这里。一个简单的通用答案——几乎所有的浏览器在2013年都很重要。