¿Qué es el JSON? Un mejor formato para el intercambio de datos.

JavaScript Object Notation es una representación de datos estructurados sin esquema y basada en texto que se basa en pares clave-valor y listas ordenadas. Aunque JSON se deriva de JavaScript, se admite de forma nativa o mediante bibliotecas en la mayoría de los principales lenguajes de programación. JSON se usa comúnmente, pero no exclusivamente, para intercambiar información entre clientes web y servidores web.

En los últimos 15 años, JSON se ha vuelto omnipresente en la web. Hoy es el formato de elección para casi todos los servicios web disponibles públicamente, y también se usa con frecuencia para servicios web privados.

La popularidad de JSON también ha resultado en el soporte nativo de JSON en muchas bases de datos. Las bases de datos relacionales como PostgreSQL y MySQL ahora se envían con soporte nativo para almacenar y consultar datos JSON. Las bases de datos NoSQL como MongoDB y Neo4j también admiten JSON, aunque MongoDB utiliza una versión binaria ligeramente modificada de JSON detrás de escena.

En este artículo, echaremos un vistazo rápido a JSON y discutiremos de dónde vino, sus ventajas sobre XML, sus inconvenientes, cuándo debería usarlo y cuándo debería considerar alternativas. Pero primero, vamos a sumergirnos en lo esencial de cómo se ve JSON en la práctica.

Ejemplo JSON

Aquí hay un ejemplo de datos codificados en JSON:

{
"FirstName": "Jonathan",
"Apellido": "Freeman",
"LoginCount": 4,
"IsWriter": cierto,
"funciona con": [“Spantree Technology Group”, “InfoWorld”],
"mascotas":[[
{
"Nombre": "Lilly",
"Tipo": "Mapache"
}
]
}

La estructura anterior define claramente algunos atributos de una persona. Incluye un nombre y apellido, la cantidad de veces que la persona ha iniciado sesión, si esta persona es escritora, una lista de compañías con las que trabaja y una lista de las mascotas de la persona (solo una, en este caso). Una estructura como la anterior se puede pasar de un servidor a un navegador web o una aplicación móvil, que luego realizará alguna acción, como mostrar los datos o guardarlos para referencia posterior.

JSON es un formato de datos genérico con un número mínimo de tipos de valores: cadenas, números, booleanos, listas, objetos y nulos. Aunque la notación es un subconjunto de JavaScript, estos tipos están representados en todos los lenguajes de programación comunes, lo que hace que JSON sea un buen candidato para transmitir datos a través de huecos en el lenguaje.

Archivos JSON

Los datos JSON se almacenan en archivos que terminan con la extensión .json. De acuerdo con el ethos legible por humanos de JSON, estos son simplemente archivos de texto sin formato y se pueden abrir y examinar fácilmente. Como explica el blog SQLizer, esta también es una clave para la interoperabilidad más amplia de JSON, ya que casi todos los idiomas que puede nombrar pueden leer y procesar archivos de texto sin formato, y son fáciles de enviar a través de Internet.

¿Por qué debería usar JSON?

Para comprender la utilidad e importancia de JSON, tendremos que entender un poco sobre el historial de interactividad en la web.

A principios de la década de 2000, la interactividad en la web comenzó a transformarse. En ese momento, el navegador servía principalmente como un cliente tonto para mostrar información, y el servidor hizo todo el trabajo duro para preparar el contenido para su visualización. Cuando un usuario hace clic en un enlace o botón en el navegador, se envía una solicitud al servidor, el servidor preparará la información necesaria como HTML y el navegador representará el HTML como una nueva página. Este patrón era lento e ineficiente, y requería que el navegador volviera a procesar todo en la página, incluso si solo una sección de la página hubiera cambiado.

Debido a que las recargas de página completa eran costosas, los desarrolladores web buscaron tecnologías más nuevas para mejorar la experiencia general del usuario. Mientras tanto, la capacidad de realizar solicitudes web en segundo plano mientras se mostraba una página, que se había introducido recientemente en Internet Explorer 5, estaba demostrando ser un enfoque viable para cargar datos de forma incremental para su visualización. En lugar de volver a cargar todo el contenido de la página, al hacer clic en el botón Actualizar se activará una solicitud web que se cargará en segundo plano. Cuando se cargaban los contenidos, los datos podían manipularse, guardarse y mostrarse en la página usando JavaScript, el lenguaje de programación universal en los navegadores.

REST vs. SOAP: la conexión JSON

Originalmente, estos datos se transfirieron en formato XML (ver un ejemplo a continuación) usando un protocolo de mensajería llamado SOAP (Protocolo simple de acceso a objetos). Pero XML era detallado y difícil de administrar en JavaScript. JavaScript ya tenía objetos, que son una forma de expresar datos dentro del lenguaje, por lo que Douglas Crockford tomó un subconjunto de esa expresión como una especificación para un nuevo formato de intercambio de datos y lo denominó JSON. JSON fue mucho más fácil de leer para las personas y de analizar los navegadores.

En el transcurso de los años 2000, otra tecnología de servicios web, denominada Representational State Transfer, o REST, comenzó a superar a SOAP con el fin de transferir datos. Una de las grandes ventajas de programar usando REST API es que puede usar múltiples formatos de datos, no solo XML, sino también JSON y HTML. A medida que los desarrolladores web comenzaron a preferir JSON sobre XML, también lo hicieron a favor de REST sobre SOAP. Como Kostyantyn Kharchenko lo puso en el blog de Svitla, "En muchos sentidos, el éxito de REST se debe al formato JSON debido a su fácil uso en varias plataformas".

Hoy, JSON es el estándar de facto para el intercambio de datos entre clientes web y móviles y servicios de back-end.

JSON vs. XML

Como se señaló anteriormente, la principal alternativa a JSON es XML. Sin embargo, XML se está volviendo cada vez menos común en los nuevos sistemas, y es fácil ver por qué. A continuación se muestra una versión de los datos que vio arriba, esta vez en XML:



Jonathan
Hombre libre
4 4
cierto

Spantree Technology Group
InfoWorld



Lilly
Mapache


Además de ser más detallado (exactamente el doble de detallado en este caso), XML también introduce cierta ambigüedad al analizar una estructura de datos compatible con JavaScript. La conversión de XML a un objeto JavaScript puede tomar de decenas a cientos de líneas de código y, en última instancia, requiere personalización en función del objeto específico que se analiza. La conversión de JSON a un objeto JavaScript requiere una línea de código y no requiere ningún conocimiento previo sobre el objeto que se analiza.

Limitaciones de JSON

Aunque JSON es un formato de datos relativamente conciso y flexible con el que es fácil trabajar en muchos lenguajes de programación, existen algunos inconvenientes en el formato. Aquí están las cinco limitaciones principales:

  1. Sin esquema Por un lado, eso significa que tiene total flexibilidad para representar los datos de la forma que desee. Por otro lado, significa que podría crear accidentalmente datos deformes muy fácilmente.
  2. Solo un tipo de número: el formato de coma flotante de precisión doble IEEE-754. Eso es bastante bocado, pero simplemente significa que no puede aprovechar los diversos y variados tipos de números disponibles en muchos lenguajes de programación.
  3. Sin tipo de fecha. Esta omisión significa que los desarrolladores deben recurrir al uso de representaciones en cadena de fechas, lo que lleva a discrepancias de formato, o deben representar las fechas en forma de milisegundos desde la época (1 de enero de 1970).
  4. Sin comentarios. Esto hace que sea imposible anotar campos en línea, lo que requiere documentación adicional y aumenta la probabilidad de malentendidos.
  5. Verbosidad. Si bien JSON es menos detallado que XML, no es el formato de intercambio de datos más conciso. Para servicios de gran volumen o de propósito especial, querrá utilizar formatos de datos más eficientes.

¿Cuándo debo usar JSON?

Si está escribiendo un software que se comunica con un navegador o una aplicación móvil nativa, debe usar JSON como formato de datos. El uso de un formato como XML es una opción desactualizada y una señal de alerta para el talento front-end y móvil que de otro modo le gustaría atraer.

En el caso de la comunicación de servidor a servidor, es mejor que utilice un marco de serialización como Apache Avro o Apache Thrift. JSON no es una mala elección aquí, y aún podría ser exactamente lo que necesita, pero la respuesta no es tan clara como para la comunicación web y móvil.

Si está utilizando bases de datos NoSQL, está prácticamente atascado con lo que le proporcione la base de datos. En las bases de datos relacionales que admiten JSON como tipo, una buena regla general es usarlo lo menos posible. Las bases de datos relacionales se han ajustado para datos estructurados que se ajustan a un esquema particular. Si bien la mayoría ahora admite datos más flexibles en forma de JSON, puede esperar un impacto en el rendimiento al consultar propiedades dentro de esos objetos JSON.

JSON es el formato omnipresente y de facto para enviar datos entre servidores web y navegadores y aplicaciones móviles. Su diseño simple y flexibilidad hacen que sea fácil de leer y comprender, y en la mayoría de los casos, fácil de manipular en el lenguaje de programación que elija. La falta de un esquema estricto permite la flexibilidad del formato, pero esa flexibilidad a veces hace que sea difícil asegurarse de que está leyendo y escribiendo JSON correctamente.

Analizador JSON

La parte del código de una aplicación que transforma los datos almacenados como JSON en un formato que la aplicación puede usar se denomina analizador sintáctico JavaScript, como era de esperar, incluye un analizador nativo, el método JSON.parse ().

Es posible que tenga que trabajar un poco más para trabajar con JSON en lenguajes fuertemente tipados como Scala o Elm, pero la adopción generalizada de JSON significa que hay bibliotecas y utilidades para ayudarlo en todas las partes más difíciles.

El sitio web json.org incluye una lista completa de bibliotecas de códigos que puede usar para analizar, generar y manipular JSON, en lenguajes tan diversos como Python, C # y COBOL.

Utilidades JSON

Si está buscando manipular o examinar datos codificados con JSON directamente, sin escribir el código usted mismo, hay varias utilidades en línea que pueden ayudarlo. Todos los equivalentes programáticos en las bibliotecas de códigos vinculadas anteriormente, pero puede cortar y pegar el código JSON en estas herramientas basadas en navegador para ayudarlo a comprender mejor JSON o realizar un análisis rápido y sucio:

Tutorial de JSON

¿Listo para sumergirse y aprender más sobre cómo trabajar con JSON en sus aplicaciones interactivas? La red de desarrolladores de Mozilla tiene un excelente tutorial que lo ayudará a comenzar con JSON y JavaScript. Si está listo para pasar a otros idiomas, consulte el tutorial sobre el uso de JSON con Java (de Baeldung), con Python (de DataCamp) o con C # (de la Ayuda de pruebas de software). ¡Buena suerte!

Josh Fruhlinger contribuyó a este artículo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *