jQuery.parseJSON vs JSON.parse
jQuery.parseJSON
和JSON.parse
是执行相同任务的两个函数。 如果jQuery库已经加载,那么使用jQuery.parseJSON
会比使用JSON.parse
,就性能而言呢?
如果是,为什么? 如果不是,为什么不呢?
这里是jQuery 1.9.1的一个摘录:
parseJSON: function( data ) { // Attempt to parse using the native JSON parser first if ( window.JSON && window.JSON.parse ) { return window.JSON.parse( data ); } if ( data === null ) { return data; } if ( typeof data === "string" ) { // Make sure leading/trailing whitespace is removed (IE can't handle it) data = jQuery.trim( data ); if ( 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 ); },
正如你所看到的,如果可用的话,jQuery将使用本地的JSON.parse
方法,否则它将尝试使用new Function
来评估数据,这与eval
类似。
所以是的,你一定要使用jQuery.parseJSON
。
根据jQuery
在浏览器提供JSON.parse的本地实现的地方,jQuery使用它来parsingstring。
这意味着如果浏览器中没有本地实现,jQuery将提供一个JSONparsing器。 下面是具有(而不是具有)JSONfunction的浏览器的比较图表
JSON.parse()本身在某些浏览器上可用,而不是在其他浏览器上可用,所以使用库更安全。 其他受访者指出,JQuery的实施效果很好。 还有Douglas Crockford的JSON库 ,如果可用的话,它使用本地实现。
JSON库有一个好处,就是它有一个把JavaScript对象转换成JSONstring的方法,目前在jQuery中是缺less的。
如果您使用的是jQuery 3.0+,那么您应该使用JSON.parse
因为jQuery.parseJSON
已被弃用。
从jQuery 3.0开始,不推荐使用$ .parseJSON。 要parsingJSON对象,请改用本机JSON.parse方法。
我不知道性能,但是使用jQuery方法肯定更安全一些,因为ie7和更低版本的浏览器本身可能没有任何JSONfunction。
这与兼容性有关,就像使用jQuery的每个方法而不是数组的本地forEach
方法进行迭代一样。
谈到性能 , 最新的答案是JSON.parse
。
现在, 每个浏览器都支持本机JSON对象,所以selectJSON.parse
。 您可以在这里看到支持表: http : //caniuse.com/#feat=json
你也可以在GitHub的JQuery仓库中search这个别名: https : //github.com/jquery/jquery/search? utf8 =% E2%9C%93 & q =parseJSON
此外, jQuery.parseJson
已被弃用 3.0 +版本,如其他答案所述。
如果您想要为非常旧的浏览器提供支持(通常不推荐 ), 那么您应该只使用jQuery的版本。
jQuery内部使用JSON.parse
来parsingJSON文件。所以在大多数情况下它没有任何区别。
但是,一些较旧的浏览器不支持JSON.parse
function。在这种情况下,使用jQuery.parseJSON
是有益的,因为jQuery可以使用自己的函数来处理JSON。
注意:
jQuery.parseJSON
从jQuery 3.0弃用,所以请使用本机的JSON.parse
方法。