jQuery.parseJSON和JSON.parse是执行相同任务的两个功能。如果已经加载了jQuery库,就性能而言,使用jQuery.parseJSON会比使用更好JSON.parse吗?
如果是,为什么?如果没有,为什么不呢?
jQuery.parseJSON和JSON.parse是执行相同任务的两个功能。如果已经加载了jQuery库,就性能而言,使用jQuery.parseJSON会比使用更好JSON.parse吗?
如果是,为什么?如果没有,为什么不呢?
Answers:
这是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。
JSON.parse()在某些浏览器上本机可用,而在其他浏览器上不可用,因此使用库更安全。正如其他受访者指出的那样,JQuery实现效果很好。还有Douglas Crockford的JSON库,该库使用本机实现(如果可用)。
JSON库的优势在于,它具有一种将JavaScript对象转换为JSON字符串的方法,目前jQuery中缺少该方法。
如果您使用的是jQuery版本3(于2016年发布),则应使用,JSON.parse()因为它jQuery.parseJSON() 已被弃用。
从jQuery 3.0开始,不推荐使用$ .parseJSON。要解析JSON对象,请改用本机JSON.parse方法。
我不了解性能,但是使用jQuery方法绝对更安全,因为某些浏览器(例如ie7和更低版本)可能本身没有任何JSON功能。
这与兼容性有关,就像您使用jQuery的each方法而不是数组的本机forEach方法进行迭代一样。
关于性能,最新的答案是JSON.parse。
原生JSON对象支持在每一个浏览器如今,这样的选择JSON.parse。您可以在此处查看支持表:http : //caniuse.com/#feat=json
您还可以在GitHub上的JQuery的存储库中搜索此别名外观:https : //github.com/jquery/jquery/search? utf8 =% E2%9C%93 & q =parseJSON
此外,如此处其他答案所提及,在版本3.0+上jQuery.parseJson已弃用。
如果您使用的是旧的JQuery版本,则仅应使用jQuery的版本+如果您想为非常老的浏览器提供支持(通常不建议这样做)。
jQuery内部用于JSON.parse解析JSON文件,因此在大多数情况下它没有任何区别。
但是某些较旧的浏览器不支持JSON.parse功能,在这种情况下使用jQuery.parseJSON是有益的,因为jQuery可以使用自己的功能处理JSON。
注意:
jQuery.parseJSON自jQuery 3.0起已弃用,因此请使用本机JSON.parse方法。