79 votes

jQuery.parseJSON vs JSON.parse

jQuery.parseJSON et JSON.parse sont deux fonctions qui effectuent la même tâche. Si la bibliothèque jQuery est déjà chargée, utiliser jQuery.parseJSON serait-il préférable à utiliser JSON.parse , en termes de performances?

Si oui pourquoi? Si non, pourquoi pas?

113voto

dfsq Points 41491

Voici un extrait de 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 );
},

Comme vous pouvez le voir, jQuery va utiliser le natif JSON.parse méthode si elle est disponible, sinon, il va essayer d'évaluer les données avec new Function, ce qui est un peu comme eval.

Si oui, vous devriez certainement utiliser jQuery.parseJSON.

10voto

Joseph the Dreamer Points 43727

Selon jQuery

Lorsque le navigateur fournit une implémentation native de JSON.parse, jQuery l'utilise pour analyser la chaîne.

cela signifie donc que jQuery fournit un analyseur JSON si aucune implémentation native n'existe dans le navigateur. voici un tableau comparatif des navigateurs qui ont (et n'ont pas) la fonctionnalité JSON

6voto

leifbennett Points 51

JSON.parse () est disponible nativement sur certains navigateurs, pas sur d'autres, il est donc plus sûr d'utiliser une bibliothèque. L'implémentation de JQuery fonctionne bien, comme d'autres répondants l'ont noté. Il y a aussi la bibliothèque JSON de Douglas Crockford , qui utilise l'implémentation native si disponible.

La bibliothèque JSON présente l’avantage d’avoir une méthode pour transformer un objet JavaScript en une chaîne JSON, qui est absente de jQuery pour le moment.

3voto

gion_13 Points 15594

Je ne connais pas les performances, mais il est définitivement plus sûr d’utiliser la méthode jQuery car certains navigateurs tels que ie8 et les versions antérieures ne disposent pas de fonctionnalités JSON natives.
Tout est une question de compatibilité, comme si vous utilisiez chaque méthode de jQuery à la place de la méthode native forEach de la matrice pour l'itération.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X