[英]jQuery.parseJSON vs 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
。
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和lower這樣的瀏覽器本身可能沒有任何JSON功能。
這就是兼容性,就像你使用jQuery的每個方法而不是數組的原生forEach
方法進行迭代一樣。
談到性能 , 最新的答案是JSON.parse
。
現在每個瀏覽器都支持本機JSON對象,因此選擇JSON.parse
。 您可以在此處查看支持表: http : //caniuse.com/#feat=json
您還可以在GitHub上的JQuery存儲庫中搜索此別名外觀: https : //github.com/jquery/jquery/search? utf8 =% E2%9C%93 & q = tablesJSON
此外, jQuery.parseJson
在版本3.0+上已被棄用 ,如此處其他答案所述。
如果你是一個舊的JQuery版本,你應該只使用jQuery版本+如果你想為非常舊的瀏覽器提供支持(通常不推薦 )。
jQuery在內部使用JSON.parse
來解析JSON文件。因此在大多數情況下它沒有任何區別。
但是一些較舊的瀏覽器不支持JSON.parse
功能。在這種情況下,使用jQuery.parseJSON
是有益的,因為jQuery可以使用自己的函數處理JSON。
注意:
jQuery 3.0中不推薦使用
jQuery.parseJSON
所以請使用原生的JSON.parse
方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.