jQuery.parseJSONy JSON.parseson dos funciones que realizan la misma tarea. Si la biblioteca jQuery ya está cargada, ¿ jQuery.parseJSONsería mejor usar que usar JSON.parse, en términos de rendimiento?
¿Si es así por qué? Si no, ¿por qué no?
jQuery.parseJSONy JSON.parseson dos funciones que realizan la misma tarea. Si la biblioteca jQuery ya está cargada, ¿ jQuery.parseJSONsería mejor usar que usar JSON.parse, en términos de rendimiento?
¿Si es así por qué? Si no, ¿por qué no?
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.parsemétodo nativo si está disponible, y de lo contrario, intentará evaluar los datos con new Function, que es algo así como eval.
Entonces sí, definitivamente deberías usar jQuery.parseJSON.
JSON.parse: caniuse.com/#search=json
Cuando el navegador proporciona una implementación nativa de JSON.parse, jQuery lo usa para analizar la cadena.
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
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.
Si está utilizando la versión 3 de jQuery (lanzada en 2016), debería utilizarla JSON.parse()porque jQuery.parseJSON() ha quedado obsoleta .
A partir de jQuery 3.0, $ .parseJSON está en desuso. Para analizar objetos JSON, utilice el método JSON.parse nativo en su lugar.
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 forEachmétodo nativo de la matriz para la iteración.
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=json
Tambié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.parseJsonquedó 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 ).
jQuery utiliza internamente JSON.parsepara 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.parsefuncionalidad, en ese caso, el uso jQuery.parseJSONes beneficioso ya que jQuery puede manejar JSON usando su propia función.
NOTA:
jQuery.parseJSONestá en desuso de jQuery 3.0. Por lo tanto, utilice elJSON.parsemétodo nativo .