簡體   English   中英

jQuery.parseJSON vs JSON.parse

[英]jQuery.parseJSON vs JSON.parse

jQuery.parseJSONJSON.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

在瀏覽器提供JSON.parse的本機實現的地方,jQuery使用它來解析字符串。

因此,如果瀏覽器上不存在本機實現,則意味着jQuery提供了JSON解析器。 是具有(並且沒有)JSON功能的瀏覽器的對比圖表

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM