jQuery.parseJSON versus JSON.parse

jQuery.parseJSONen JSON.parsezijn twee functies die dezelfde taak uitvoeren. Als de jQuery-bibliotheek al is geladen, zou het gebruik van jQuery.parseJSONdan beter zijn dan het gebruik van JSON.parse, in termen van prestaties?

Zo ja, waarom? Zo nee, waarom niet?


Antwoord 1, autoriteit 100%

Hier is een uittreksel uit 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 );
},

Zoals u kunt zien, gebruikt jQuery de native JSON.parse-methode als deze beschikbaar is, en anders probeert het de gegevens te evalueren met new Function, die lijkt een beetje op eval.

Dus ja, je moet zeker jQuery.parseJSONgebruiken.


Antwoord 2, autoriteit 9%

Volgens jQuery

Waar de browser een native implementatie van JSON.parse biedt, gebruikt jQuery deze om de string te ontleden.

het betekent dus dat jQuery een JSON-parser levert als er geen native implementatie in de browser bestaat. hier is een vergelijkingstabelvan browsers die JSON-functionaliteit hebben (en niet hebben)


Antwoord 3, autoriteit 6%

Als je jQuery versie 3 (uitgebracht in 2016) gebruikt, moet je JSON.parse()omdat jQuery.parseJSON()is beëindigd.

Vanaf jQuery 3.0 is $.parseJSON verouderd. Gebruik in plaats daarvan de native JSON.parse-methode om JSON-objecten te ontleden.


Antwoord 4, autoriteit 5%

JSON.parse() is standaard beschikbaar in sommige browsers, niet in andere, dus het is veiliger om een ​​bibliotheek te gebruiken. De JQuery-implementatie werkt goed, zoals andere respondenten hebben opgemerkt. Er is ook Douglas Crockford’s JSON-bibliotheek, die, indien beschikbaar, de native implementatie gebruikt.

De JSON-bibliotheek heeft het voordeel dat deze een methode heeft om een ​​JavaScript-object om te zetten in een JSON-string, die momenteel ontbreekt in jQuery..


Antwoord 5, autoriteit 3%

Ik weet niets over de prestaties, maar het is zeker veiliger om de jQuery-methode te gebruiken, omdat sommige browsers, zoals ie7 en lager, mogelijk geen native JSON-functionaliteit hebben.
Het draait allemaal om compatibiliteit, net zoals je elke methode van jQuery gebruikt in plaats van de native forEachmethode van de array voor iteratie.


Antwoord 6, autoriteit 2%

Over prestatiesgesproken, het meest bijgewerkteantwoord is JSON.parse.

Het native JSON-object wordt tegenwoordig ondersteundin elke browser, dus kies voor JSON.parse. U kunt de ondersteuningstabel hier bekijken: http://caniuse.com/#feat=json

Je kunt deze alias ook zoeken in de repository van JQuery op GitHub: https://github.com/jquery/jquery/search?utf8=%E2%9C%93&q=parseJSON

Ook jQuery.parseJSONwas verouderdin versie 3.0+, zoals vermeld in andere antwoorden hier.

Gebruik de jQuery-versie alleen als u een oude JQuery-versie hebt + als u ondersteuning wilt bieden voor zeer oude browsers (normaal gesproken niet aanbevolen).


Antwoord 7

jQuery gebruikt intern JSON.parseom het JSON-bestand te ontleden. In de meeste gevallen maakt het dus geen verschil.

Maar sommige van de oudere browsers ondersteunen de functionaliteit JSON.parseniet. In dat geval is het nuttig om jQuery.parseJSONte gebruiken, aangezien jQuery JSON aankan met zijn eigen functie .

OPMERKING:

jQuery.parseJSONis verouderd vanaf jQuery 3.0. Gebruik dus de native JSON.parse-methode.

Other episodes