jQuery.parseJSON vs JSON.parse

jQuery.parseJSONJSON.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.parsefunction。在这种情况下,使用jQuery.parseJSON是有益的,因为jQuery可以使用自己的函数来处理JSON。

注意:

jQuery.parseJSON从jQuery 3.0弃用,所以请使用本机的JSON.parse方法。