Con el creciente desarrollo de Internet en los últimos tiempos debido a los dispositivos móviles, hemos asistido a una revolución en la manera de intercambiar datos. La mayoría de servicios nacieron para ser consultados desde un navegador web, pero se tuvieron que ir adaptando para poder hacer aplicaciones nativas, que permiten un mayor y mejor uso de los mismos. En estos casos la mayoría de las empresas decidió que la manera más sencilla de proveer a esas aplicaciones de datos, sería mediante una API.
En un principio la forma de comunicar datos entre dos aplicaciones fue XML, un lenguaje de marcado (similar a HTML). Pero su sintaxis es poco clara y en muchos casos tiende a generar ficheros con mucha sintaxis para la información real que queremos transmitir. Para sustituir a XML el formato que mejor se ha posicionado es JSON.
JSON
JSON es un formato mucho más claro, con mucha menor sintaxis al no utilizar etiquetas para indicar cada contenido y esta basado en un sistema similar a los diccionarios (relación clave-valor). Este formato ha sido elegido por la mayoría de las APIs y desarrollos en los últimos años y actualmente XML se está quedando relegado a aplicación antiguas.
Por ejemplo estar sería la manera de mandar la información de una persona:
{
"padre": "Juan",
"madre": "Maria",
"edad": 40,
"hijos" : [
{
"nombre": "Pedro",
"edad": 22
},
{
"nombre": "Marta",
"edad": 23
}
]
}
Visualmente lo podríamos ver así:
Ejemplo en XML
Si quisiéramos realizar lo mismo en XML esta sería la forma:
<?xml version="1.0" encoding="UTF-8" ?>
<padre>Juan</padre>
<madre>Maria</madre>
<edad>40</edad>
<hijos>
<nombre>Pedro</nombre>
<edad>22</edad>
</hijos>
<hijos>
<nombre>Marta</nombre>
<edad>23</edad>
</hijos>
Como podéis ver en la manera de tratar los arrays en XML, se añade cada vez la etiqueta, comprobando como comentábamos al principio que este formato tiene una mayor carga de sintaxis que JSON. Esto además hace que la cantidad de bytes que ocupe la respuesta sea mayor.
Ejemplo de JSON real
En un caso real, la respuesta en formato JSON no sería como el primer ejemplo debido a que de esa manera ocupa mucho espacio, así que lo que se suele hacer es “comprimir” esa respuesta (básicamente quitando los espacios en blanco y los saltos de línea).
{"padre":"Juan","madre":"Maria","edad":40,"hijos":[{"nombre":"Pedro","edad":22},{"nombre":"Marta","edad":23}]}
Para una aplicación es igual ver el JSON extendido como en el primer caso, que verlo comprimido como en el ejemplo superior, ya que el uso de espacios e identación solo se hace por motivos de legibilidad para los usuarios/desarrolladores.