jQuery.parseJSON
并且JSON.parse
是执行相同任务的两个函数。如果已经加载了 jQuery 库,那么在性能方面 usingjQuery.parseJSON
会比 using 更好JSON.parse
吗?
如果是,为什么?如果没有,为什么不呢?
jQuery.parseJSON
并且JSON.parse
是执行相同任务的两个函数。如果已经加载了 jQuery 库,那么在性能方面 usingjQuery.parseJSON
会比 using 更好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 );
},
如您所见,如果本地JSON.parse
方法可用,jQuery 将使用本地方法,否则它将尝试使用 评估数据new Function
,这有点像eval
.
所以是的,你绝对应该使用jQuery.parseJSON
.
如果您使用的是 jQuery 版本 3(2016 年发布),那么您应该使用JSON.parse()
because jQuery.parseJSON()
has been deprecated。
从 jQuery 3.0 开始,不推荐使用 $.parseJSON。要解析 JSON 对象,请改用本机 JSON.parse 方法。
JSON.parse() 在某些浏览器上原生可用,在其他浏览器上不可用,因此使用库更安全。正如其他受访者所指出的,JQuery 实现运行良好。还有Douglas Crockford 的 JSON 库,如果可用,它使用本机实现。
JSON 库的优点是它具有将 JavaScript 对象转换为 JSON 字符串的方法,目前 jQuery 缺少这种方法。
我不知道性能,但是使用 jQuery 方法肯定更安全,因为像 ie7 和更低版本的一些浏览器本身可能没有任何 JSON 功能。
这都是关于兼容性的,就像您使用 jQuery 的 each 方法而不是数组的本机forEach
方法进行迭代一样。
谈到性能,最新的答案是JSON.parse
。
现在每个浏览器都支持原生 JSON 对象,所以选择. 您可以在此处查看支持表:http: //caniuse.com/#feat=jsonJSON.parse
您还可以在 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
方法。