jQuery.parseJSON
i JSON.parse
to dwie funkcje, które wykonują to samo zadanie. Jeśli biblioteka jQuery jest już załadowana, czy używanie jQuery.parseJSON
byłoby lepsze JSON.parse
pod względem wydajności niż używanie ?
Jeśli tak, dlaczego? Jeśli nie, dlaczego nie?
javascript
jquery
Przepełnienie pytań
źródło
źródło
Odpowiedzi:
Oto fragment z 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 ); },
Jak widać, jQuery użyje
JSON.parse
metody natywnej , jeśli jest dostępna, aw przeciwnym razie spróbuje oszacować danenew Function
, co jest trochę podobneeval
.Więc tak, zdecydowanie powinieneś użyć
jQuery.parseJSON
.źródło
JSON.parse
: caniuse.com/#search=jsonWedług jQuery
oznacza to zatem, że jQuery zapewnia parser JSON, jeśli w przeglądarce nie ma natywnej implementacji. Oto tabela porównawcza przeglądarek, które mają (i nie mają) funkcjonalności JSON
źródło
JSON.parse () jest natywnie dostępna w niektórych przeglądarkach, a nie w innych, więc bezpieczniej jest korzystać z biblioteki. Implementacja JQuery działa dobrze, jak zauważyli inni respondenci. Istnieje również biblioteka JSON Douglasa Crockforda , która używa natywnej implementacji, jeśli jest dostępna.
Biblioteka JSON ma tę zaletę, że ma metodę przekształcania obiektu JavaScript w ciąg JSON, którego obecnie brakuje w jQuery.
źródło
Jeśli używasz jQuery w wersji 3 (wydanej w 2016 r.), Powinieneś użyć,
JSON.parse()
ponieważjQuery.parseJSON()
została wycofana .źródło
Nie wiem o wydajności, ale zdecydowanie bezpieczniej jest używać metody jQuery, ponieważ niektóre przeglądarki, takie jak ie7 i starsze, mogą nie mieć natywnie żadnych funkcji JSON.
Chodzi o kompatybilność, tak jak używasz każdej metody jQuery zamiast natywnej
forEach
metody tablicy do iteracji.źródło
Mówiąc o wydajności , najbardziej aktualną odpowiedzią jest
JSON.parse
.Natywny obiekt JSON jest obecnie obsługiwany w każdej przeglądarce , więc zdecyduj się na
JSON.parse
. Możesz zobaczyć tabelę wsparcia tutaj: http://caniuse.com/#feat=jsonMożesz również wyszukać występowanie tego aliasu w repozytorium JQuery na GitHub: https://github.com/jquery/jquery/search?utf8=%E2%9C%93&q=parseJSON
Ponadto
jQuery.parseJson
został wycofany w wersji 3.0+, jak wspomniano w innych odpowiedziach tutaj.Powinieneś używać tylko wersji jQuery, jeśli jesteś starą wersją JQuery +, jeśli chcesz zapewnić obsługę bardzo starych przeglądarek (zwykle nie jest to zalecane ).
źródło
jQuery używa wewnętrznie
JSON.parse
do analizowania pliku JSON, więc w większości przypadków nie robi to żadnej różnicy.Jednak niektóre starsze przeglądarki nie obsługują
JSON.parse
funkcjijQuery.parseJSON
jest korzystne, ponieważ jQuery może obsługiwać JSON za pomocą własnej funkcji.UWAGA:
źródło