¿Qué es JSON?
JSON (JavaScript Object Notation) es un formato ligero de intercambio de datos basado en texto que permite representar información estructurada de forma sencilla y legible tanto para personas como para máquinas.
Aunque deriva de la sintaxis de JavaScript, JSON es un formato independiente del lenguaje, por lo que puede utilizarse en prácticamente cualquier lenguaje de programación.
Actualmente es el formato más utilizado para el intercambio de información entre aplicaciones, especialmente en APIs REST, aplicaciones web y servicios en la nube.
Características de JSON
JSON presenta las siguientes características:
- Formato basado en texto.
- Fácil de leer y escribir.
- Ligero y eficiente.
- Independiente del lenguaje.
- Amplio soporte en prácticamente todos los lenguajes de programación.
- Muy utilizado en APIs y servicios web.
Estructura de un documento JSON
Un documento JSON está formado por una colección de objetos y arrays, construidos a partir de pares clave-valor.
Ejemplo:
{
"nombre": "Ana",
"edad": 28,
"activo": true
}
En este ejemplo:
- nombre es la clave.
- "Ana" es el valor.
- Cada clave aparece una única vez dentro del objeto.
- Los pares clave-valor se separan mediante comas.
{}.
Tipos de datos
JSON admite únicamente seis tipos de datos.
| Tipo | Ejemplo |
|---|---|
| String | "Madrid" |
| Number | 25, 3.14 |
| Boolean | true, false |
| Null | null |
| Object | { "id": 1 } |
| Array | [1,2,3] |
Objetos JSON
Un objeto es una colección de pares clave-valor.
Ejemplo:
{
"nombre": "Carlos",
"edad": 30,
"ciudad": "Madrid"
}
Características:
- Se delimitan mediante
{}. - Las claves siempre van entre comillas dobles.
- Cada clave tiene asociado un único valor.
Arrays JSON
Un array representa una colección ordenada de valores.
Ejemplo:
[
"Java",
"Python",
"PHP"
]
Los arrays pueden contener:
- Cadenas.
- Números.
- Objetos.
- Otros arrays.
- Valores booleanos.
- Null.
[].
Valores anidados
Los objetos pueden contener otros objetos o arrays.
Ejemplo:
{
"empleado": {
"nombre": "Laura",
"edad": 35
},
"telefonos": [
"600111111",
"911223344"
]
}
Este mecanismo permite representar estructuras de datos complejas.
Sintaxis de JSON
Las principales reglas sintácticas son:
- Las claves deben ir entre comillas dobles.
- Los pares clave-valor se separan mediante
:. - Los elementos se separan mediante comas.
- No puede existir una coma final.
- Todo documento debe comenzar por un objeto
{}o un array[].
Ejemplo válido:
{
"nombre": "Pedro",
"edad": 40
}
Ejemplo incorrecto:
{
nombre: "Pedro",
edad: 40,
}
JSON en APIs REST
JSON es el formato más utilizado para intercambiar información entre un cliente y un servidor mediante APIs REST.
Proceso simplificado:
Cliente
│
Petición HTTP
│
Servidor
│
Respuesta JSON
│
Cliente
Ejemplo de respuesta:
{
"id": 15,
"nombre": "Monitor",
"precio": 199.99
}
JSON frente a XML
| JSON | XML |
|---|---|
| Más ligero | Más verboso |
| Sintaxis sencilla | Sintaxis más compleja |
| Fácil de procesar | Más etiquetas |
| Muy utilizado en APIs REST | Muy utilizado en servicios antiguos |
| Basado en objetos | Basado en etiquetas |
Serialización y deserialización
Cuando una aplicación trabaja con JSON suelen realizarse dos procesos:
- Serialización: convertir un objeto del programa a JSON.
- Deserialización: convertir un documento JSON en un objeto del programa.
Objeto
↓
Serialización
↓
JSON
↓
Deserialización
↓
Objeto
Caso práctico
Situación
Una aplicación móvil solicita los datos de un usuario a una API REST.
La respuesta recibida es:
{
"id": 8,
"nombre": "Lucía",
"correo": "lucia@email.com",
"activo": true
}
La aplicación deserializa el documento JSON y utiliza la información para mostrar el perfil del usuario.
Ventajas e inconvenientes
Ventajas
- Fácil lectura.
- Sintaxis sencilla.
- Muy ligero.
- Gran compatibilidad.
- Excelente rendimiento.
- Amplio soporte en APIs.
Inconvenientes
- No admite comentarios.
- No define esquemas por sí mismo.
- No permite funciones.
- Menor capacidad descriptiva que XML para ciertos documentos complejos.
Errores habituales
- Olvidar las comillas dobles en las claves.
- Añadir una coma al final del último elemento.
- Confundir un objeto
{}con un array[]. - Utilizar comillas simples en lugar de dobles.
- Pensar que JSON es un lenguaje de programación.
- Introducir comentarios dentro del documento JSON.
Cómo evitarlos
- Validar siempre el documento JSON.
- Recordar las reglas básicas de la sintaxis.
- Diferenciar claramente objetos y arrays.
- Utilizar herramientas de validación durante el desarrollo.
Relaciones con otros temas
JSON está estrechamente relacionado con:
- APIs REST.
- HTTP.
- Servicios web.
- JavaScript.
- XML.
- AJAX.
- Desarrollo web.
- Microservicios.
- Serialización de datos.
Conceptos clave para recordar
[!NOTE]
- JSON significa JavaScript Object Notation.
- Es un formato de intercambio de datos, no un lenguaje de programación.
- Es independiente del lenguaje de programación.
- Utiliza pares clave-valor.
- Los objetos se delimitan mediante {}.
- Los arrays se delimitan mediante [].
- Las claves deben escribirse siempre entre comillas dobles.
- Admite seis tipos de datos: String, Number, Boolean, Null, Object y Array.
- Es el formato predominante en las APIs REST modernas.
- La serialización convierte objetos en JSON y la deserialización realiza el proceso inverso.