jQuery.parseJSON
和JSON.parse
是执行相同任务的两个函数。如果已经加载了 jQuery 库,就性能而言,使用jQuery.parseJSON
会比使用更好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 版本 3(2016 年发布),那么您应该使用JSON.parse()
因为jQuery.parseJSON()
已被弃用。
从 jQuery 3.0 开始,不推荐使用 $.parseJSON。要解析 JSON 对象,请改用原生 JSON.parse 方法。
JSON.parse() 在某些浏览器上本机可用,在其他浏览器上不可用,因此使用库更安全。正如其他受访者所指出的,JQuery 实现运行良好。还有Douglas Crockford 的 JSON 库,它使用本机实现(如果可用)。
JSON 库的优点是它有一种方法可以将 JavaScript 对象转换为 JSON 字符串,而目前 jQuery 缺少这种方法。
我不知道性能,但使用 jQuery 方法肯定更安全,因为某些浏览器(如 ie7 及更低版本)可能本身没有任何 JSON 功能。
这完全是为了兼容性,就像您使用 jQuery 的 each 方法而不是数组的本机forEach
方法进行迭代一样。