jQuery.parseJSON
和JSON.parse
是执行相同任务的两个函数。如果已经加载了jQuery库,那么在性能方面使用jQuery.parseJSON
会比使用JSON.parse
更好吗?
如果是,为什么?如果不是,为什么不呢?
答案 0 :(得分:112)
以下是摘录from 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
。
答案 1 :(得分:10)
在浏览器提供JSON.parse的本机实现的地方,jQuery使用它来解析字符串。
因此,如果浏览器上不存在本机实现,则表示jQuery提供了JSON解析器。 here's a comparison chart具有(并且没有)JSON功能的浏览器
答案 2 :(得分:6)
JSON.parse()在某些浏览器上本机可用,而在其他浏览器上不可用,因此使用库更安全。正如其他受访者所指出的那样,JQuery实施效果很好。还有Douglas Crockford's JSON library,它使用本机实现(如果可用)。
JSON库的优势在于它有一个将JavaScript对象转换为JSON字符串的方法,目前jQuery中缺少这个字符串。
答案 3 :(得分:4)
如果你正在使用jQuery 3.0+,那么你应该使用JSON.parse
因为jQuery.parseJSON
已被弃用。
从jQuery 3.0开始,不推荐使用$ .parseJSON。要解析JSON对象,请改用原生JSON.parse方法。
答案 4 :(得分:3)
我不了解性能,但使用jQuery方法肯定更安全,因为像ie7和lower这样的浏览器本身可能没有任何JSON功能。
这就是兼容性,就像你使用jQuery的每个方法而不是数组的本地forEach
方法进行迭代一样。
答案 5 :(得分:2)
谈论效果,最新答案为 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版本+(通常,不推荐)。
答案 6 :(得分:1)
jQuery在内部使用JSON.parse
来解析JSON文件。因此在大多数情况下它没有任何区别。
但是一些较旧的浏览器不支持JSON.parse
功能。在这种情况下使用jQuery.parseJSON
是有益的,因为jQuery可以使用自己的函数处理JSON。
注:
jQuery 3.0中不推荐使用
jQuery.parseJSON
。所以请使用原生的JSON.parse
方法。