JSON: qué es, cómo usarlo y con qué herramientas

JSON (JavaScript Object Notation) ha eclipsado a XML como el formato de intercambio de datos preferido para aplicaciones y servicios web. Así es como lo hizo.

0
909

JavaScript Object Notation (JSON) es una representación textual sin patrones de datos estructurados basados en listas ordenadas. Aunque JSON se deriva de JavaScript, es soportado de forma nativa o a través de librerías en la mayoría de los lenguajes de programación. JSON se utiliza comúnmente, pero no exclusivamente, para intercambiar información entre clientes y servidores web.

En los últimos 15 años JSON se ha vuelto omnipresente en la web. Hoy en día es el formato de elección para casi todos los servicios web disponibles públicamente y a menudo se utiliza también para servicios web privados. La popularidad de JSON también ha llevado al soporte nativo de JSON por muchas bases de datos. Las bases de datos relacionales como PostgreSQL y MySQL ahora vienen con soporte nativo para archivar y consultar datos JSON. Las bases de datos NoSQL como MongoDB y Neo4j también soportan JSON, aunque MongoDB utiliza una versión binaria ligeramente modificada de JSON.

En este artículo echaremos un vistazo rápido a JSON y discutiremos sus ventajas sobre XML, sus desventajas, cuándo debería utilizarlo y cuándo debería considerar alternativas. Pero primero, vamos a sumergirnos en el aspecto práctico de JSON.

Ejemplo de JSON
He aquí un ejemplo de datos codificados en JSON

La estructura define claramente algunos atributos de una persona. Incluye un nombre y apellido, el número de veces que la persona ha iniciado sesión, si es escritor, una lista de empresas con las que trabaja y una lista de sus mascotas (sólo una en este caso). Una estructura como la descrita anteriormente puede ser cambiada de un servidor a un navegador web o a una aplicación móvil, que luego realizará algunas acciones como ver datos o guardar para futuras referencias.

JSON es un formato de datos genérico con un número mínimo de tipos de valores: strings, números, arrays, objetos y null. 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 de JSON un buen candidato para transmitir datos a través de fallos del «lenguaje».

Archivos JSON
Los datos JSON se almacenan en archivos que terminan con la extensión.json. Estos son archivos de texto plano y pueden abrirse y examinarse fácilmente. Como explica el blog de SQLizer, esto es también una clave para una mayor interoperabilidad de JSON, ya que casi todos los lenguajes de programación que se pueden nombrar pueden leer y procesar archivos de texto plano y son fáciles de enviar por Internet.

¿Por qué debería usar JSON?
Para entender la utilidad e importancia de JSON, primero debemos entender la historia de la interactividad web, que comenzó a transformarse a principios de la década de 2000. En ese momento el navegador se utilizaba principalmente como cliente para ver la información y el servidor hacía todo el trabajo sucio para preparar el contenido para su visualización. Cuando un usuario hace clic en un enlace o botón del navegador, se envía una petición al servidor, el servidor prepara la información necesaria en HTML y el navegador muestra HTML como una nueva página. Este modelo era lento e ineficiente, requería que el navegador volviera a mostrar todo lo que había en la página, incluso si sólo cambiaba una sección de la página.

Los desarrolladores web buscaron entonces nuevas tecnologías para mejorar la experiencia general del usuario. Mientras tanto, la capacidad de hacer peticiones web en segundo plano mientras se muestra 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 recargar todo el contenido de la página, al hacer clic en el botón de actualización se desencadenó una solicitud web que se cargó en segundo plano. Cuando se cargaba el contenido, los datos podían manipularse, guardarse y mostrarse en la página utilizando JavaScript, el lenguaje de programación universal de los navegadores.

REST vs. SOAP: la conexión JSON
Inicialmente, estos datos se transfirieron en formato XML utilizando un protocolo de mensajería llamado SOAP (Simple Object Access Protocol). Pero XML era difícil de manejar 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 específica de un nuevo formato de intercambio de datos y lo apodó JSON. JSON era mucho más fácil de leer para la gente y de analizar para los navegadores.

REST vs. SOAP: la conexión JSON
Inicialmente, estos datos se transfirieron en formato XML utilizando un protocolo de mensajería llamado SOAP (Simple Object Access Protocol). Pero XML era difícil de manejar 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 específica de un nuevo formato de intercambio de datos y lo apodó JSON. JSON era mucho más fácil de leer para la gente y de analizar para los navegadores.

Durante la década de 2000, otra tecnología de servicios web, llamada Representational State Transfer o REST, comenzó a sobrepasar a SOAP para transferir datos. Una de las grandes ventajas de programar utilizando la API de REST es que se pueden utilizar múltiples formatos de datos, no sólo XML, sino también JSON y HTML. Cuando los desarrolladores web prefirieron JSON sobre XML, también prefirieron REST a SOAP. Como Kostyantyn Kharchenko escribió en el blog de Svitla, «En muchos sentidos, el éxito de REST se debe al formato JSON gracias a su fácil uso en varias plataformas». Hoy en día, JSON es el estándar de facto para el intercambio de datos entre clientes web y móviles y servicios back-end.

JSON vs. XML
Como se acaba de mencionar, la principal alternativa a JSON es XML. Sin embargo, el XML es cada vez menos común en los nuevos sistemas y es fácil entender por qué. Abajo hay una versión del código mostrado arriba, esta vez en XML.

Además de ser más «verboso» (en este caso exactamente el doble que el código en JSON), XML también introduce algunas ambigüedades al analizar una estructura de datos compatible con JavaScript. La conversión de XML a un objeto JavaScript puede llevar de decenas a cientos de líneas de código y, finalmente, requiere una personalización basada en el objeto específico que se va a analizar. La conversión de JSON en un objeto JavaScript requiere una línea de código y no requiere ningún conocimiento previo del objeto a analizar.

Límites 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, hay algunos inconvenientes a tener en cuenta. Aquí están los cinco primeros.

Sin esquema: Por un lado, esto significa que usted tiene total flexibilidad para representar los datos de la manera que usted desea. Por otro lado, significa que podría crear datos «deformados» muy fácilmente por accidente.

Sólo un tipo de número: este límite significa simplemente que no se pueden aprovechar los diferentes y variados tipos de números disponibles en muchos lenguajes de programación.

Sin tipo de fecha: esta omisión significa que los desarrolladores deben usar representaciones de fechas en cadena, lo que resulta en discrepancias de formato, o deben representar las fechas en forma de milisegundos desde la fecha (1 de enero de 1970).

Sin comentarios: esto hace imposible anotar los campos en línea, lo que requiere documentación adicional y aumenta la probabilidad de malentendidos.

Verbosidad: Aunque JSON es menos detallado que XML, no es el formato de intercambio de datos más conciso. Para servicios de gran volumen o para fines especiales, recomendamos el uso de formatos de datos más eficientes.

¿Cuándo debe usar JSON?
Si está escribiendo software que se comunica con un navegador nativo o una aplicación móvil, debe utilizar JSON como formato de datos. Usar un formato como XML es una opción anticuada, y probablemente un obstáculo para los talentos que le gustaría atraer.

En el caso de la comunicación servidor a servidor, es posible que le convenga utilizar un marco de serialización como Apache Avro o Apache Thrift. JSON no es una mala elección en esta área y puede ser exactamente lo que usted necesita, pero no espere la misma «claridad» que usted obtiene cuando se trata de comunicación web y móvil.

Si está utilizando bases de datos NoSQL, está prácticamente obligado a utilizar todo lo que la base de datos tiene para ofrecer. En las bases de datos relacionales que soportan JSON, una buena regla empírica es usarla lo menos posible. Las bases de datos relacionales han sido optimizadas para datos estructurados que se ajustan a un esquema particular. Mientras que la mayoría ahora soporta datos más flexibles en forma de JSON, se puede esperar un impacto en el rendimiento cuando se consultan propiedades dentro de los objetos JSON.

JSON es el formato de facto para el envío de datos entre servidores web, navegadores y aplicaciones móviles. Su diseño hace que sea fácil de leer y entender y, en la mayoría de los casos, también fácil de manipular en el lenguaje de programación de su elección. La falta de un esquema estricto también permite una flexibilidad considerable, pero a veces dificulta la correcta lectura y escritura de JSON.

Parser JSON
La parte de código de una aplicación que transforma datos almacenados como JSON en un formato que la aplicación puede utilizar se llama analizador. JavaScript, como es de esperar, incluye un analizador nativo, el método JSON.parse(). Puede que tenga que trabajar un poco más duro para usar JSON en lenguajes como Scala o Elm, pero la adopción generalizada de JSON significa que hay bibliotecas y utilidades para ayudarle con todas las tareas más difíciles. El sitio web json.org incluye una lista completa de librerías de código que puede utilizar para analizar, generar y manipular JSON en diferentes lenguajes como Python, C# y COBOL.

Utilidades para JSON
Si está tratando de manipular o examinar directamente los datos codificados en JSON, sin escribir el código usted mismo, hay algunas utilidades en línea que pueden ayudarle.

Formato JSON: JSONLint formateará y validará el código JSON arbitrario.

JSON Viewer: Stack.hu tiene un sitio que creará un árbol interactivo para ayudarle a entender la estructura de su código JSON.

JSON Converter: ¿necesita mover rápidamente los datos de un formato JSON a otro? Convertcsv.com tiene herramientas que pueden convertir JSON a CSV (que luego se puede abrir en Excel) o XML.

Tutoriales JSON
¿Está listo para aprender más sobre cómo trabajar con JSON en sus aplicaciones interactivas? Mozilla Developer Network tiene un gran tutorial para conocer JSON y JavaScript. Si está preparado para cambiar a otros lenguajes de programación, consulte el tutorial sobre el uso de JSON con Java (Baeldung), Python (DataCamp) o C# (Software Testing Help). Buena suerte!

Redacción Cambio Digital On Line