jQuery.parseJSON
y JSON.parse
son dos funciones que realizan la misma tarea. Si la biblioteca jQuery ya está cargada, ¿ jQuery.parseJSON
sería mejor usar que usar JSON.parse
, en términos de rendimiento?
¿Si es así por qué? Si no, ¿por qué no?
javascript
jquery
Desbordamiento de preguntas
fuente
fuente
Respuestas:
Aquí hay un extracto 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 ); },
Como puede ver, jQuery usará el
JSON.parse
método nativo si está disponible, y de lo contrario, intentará evaluar los datos connew Function
, que es algo así comoeval
.Entonces sí, definitivamente deberías usar
jQuery.parseJSON
.fuente
JSON.parse
: caniuse.com/#search=jsonSegún jQuery
por lo tanto, significa que jQuery proporciona un analizador JSON si no existe una implementación nativa en el navegador. aquí hay una tabla de comparación de navegadores que tienen (y no tienen) funcionalidad JSON
fuente
JSON.parse () está disponible de forma nativa en algunos navegadores, no en otros, por lo que es más seguro usar una biblioteca. La implementación de JQuery funciona bien, como han señalado otros encuestados. También está la biblioteca JSON de Douglas Crockford , que usa la implementación nativa si está disponible.
La biblioteca JSON tiene la ventaja de que tiene un método para convertir un objeto JavaScript en una cadena JSON, que falta en jQuery en este momento.
fuente
Si está utilizando la versión 3 de jQuery (lanzada en 2016), debería utilizarla
JSON.parse()
porquejQuery.parseJSON()
ha quedado obsoleta .fuente
No sé sobre el rendimiento, pero definitivamente es más seguro usar el método jQuery porque algunos navegadores como ie7 y versiones inferiores pueden no tener ninguna funcionalidad JSON de forma nativa.
Se trata de compatibilidad, al igual que usa cada método de jQuery en lugar del
forEach
método nativo de la matriz para la iteración.fuente
Hablando de rendimiento , la respuesta más actualizada es
JSON.parse
.El objeto JSON nativo es compatible con todos los navegadores hoy en día, así que opte por
JSON.parse
. Puede ver la tabla de soporte aquí: http://caniuse.com/#feat=jsonTambién puede buscar estas apariciones de alias en el repositorio de JQuery en GitHub: https://github.com/jquery/jquery/search?utf8=%E2%9C%93&q=parseJSON
Además,
jQuery.parseJson
quedó obsoleto en la versión 3.0+ como se menciona en otras respuestas aquí.Solo debe usar la versión de jQuery si tiene una versión antigua de JQuery + si desea brindar soporte para navegadores muy antiguos (normalmente, no se recomienda ).
fuente
jQuery utiliza internamente
JSON.parse
para analizar el archivo JSON, por lo que no hace ninguna diferencia en la mayoría de los casos.Pero algunos de los navegadores más antiguos no admiten la
JSON.parse
funcionalidad, en ese caso, el usojQuery.parseJSON
es beneficioso ya que jQuery puede manejar JSON usando su propia función.NOTA:
fuente