JSON
Concepto de Datos y formatos en Utilidades, conectado con sus herramientas y conceptos vecinos.
Actualizado el 14 de julio de 2026
JSON (JavaScript Object Notation) es un formato de texto ligero para intercambiar datos estructurados. Aunque nació en el ecosistema JavaScript, hoy es el formato universal de las APIs REST: prácticamente cualquier lenguaje puede leerlo y escribirlo, y es mucho más compacto y legible que su predecesor, XML.
Tipos de datos en JSON
JSON admite exactamente seis tipos de valores:
| Tipo | Ejemplo | Notas |
|---|---|---|
| Cadena | "Hola mundo" | Siempre con comillas dobles |
| Número | 42, 3.14, -7 | Sin distinción entre entero y decimal |
| Booleano | true, false | En minúsculas |
| Nulo | null | Solo este valor |
| Array | [1, "dos", true] | Lista ordenada de valores |
| Objeto | {"clave": "valor"} | Par clave-valor; la clave SIEMPRE va entre "" |
Estructura de un objeto JSON
{
"nombre": "Ana García",
"edad": 32,
"activo": true,
"saldo": 1250.50,
"etiquetas": ["cliente", "premium"],
"direccion": {
"calle": "Gran Vía 10",
"ciudad": "Madrid",
"cp": "28013"
},
"borrado": null
}
Los objetos pueden anidarse sin límite. La clave siempre es una cadena entre comillas dobles; el valor puede ser cualquiera de los seis tipos.
JSON en APIs REST
En una API REST, el cliente y el servidor se comunican principalmente a través de JSON en el body de las peticiones y respuestas HTTP:
Petición (POST /usuarios):
{
"email": "ana@ejemplo.com",
"nombre": "Ana García"
}
Respuesta (201 Created):
{
"id": "a1b2c3d4",
"email": "ana@ejemplo.com",
"creadoEl": "2026-07-14T10:30:00Z"
}
El header Content-Type: application/json indica al receptor que el body es JSON.
Parsear y serializar JSON
JavaScript:
// Texto JSON → objeto JS
const obj = JSON.parse('{"nombre":"Ana","edad":32}');
console.log(obj.nombre); // "Ana"
// Objeto JS → texto JSON
const texto = JSON.stringify({ nombre: "Ana", edad: 32 });
// '{"nombre":"Ana","edad":32}'
Con JSON.stringify(obj, null, 2) el segundo argumento (replacer) puede ser null y el tercero (espacios de indentación) formatea el resultado de forma legible.
Python:
import json
datos = json.loads('{"nombre": "Ana"}') # texto → dict
texto = json.dumps(datos, ensure_ascii=False) # dict → texto
JSON frente a CSV
Cuando los datos son una tabla plana (mismas columnas para todos los registros), CSV ocupa menos espacio porque no repite los nombres de las columnas en cada fila. JSON es mejor cuando:
- Los registros tienen campos opcionales o estructura variable.
- Hay datos anidados (objetos dentro de objetos).
- Necesitas preservar tipos (JSON distingue números de cadenas; CSV no).
Errores comunes
- Comas colgantes (trailing commas):
{"a": 1, "b": 2,}con una coma tras el último elemento es inválido en JSON estándar (aunque JavaScript lo acepta). - Claves sin comillas dobles:
{nombre: "Ana"}es JavaScript válido, pero JSON inválido. - Números muy grandes: JSON no limita la precisión numérica, pero JavaScript solo puede representar enteros exactos hasta 2⁵³ - 1. Si manejas IDs de 64 bits (como los de Twitter/X), envíalos como cadenas.
- Fechas como texto: JSON no tiene un tipo fecha nativo. Se usan cadenas en formato ISO 8601 (
"2026-07-14T10:00:00Z"), pero el parser no las convierte automáticamente a objetos Date. - Caracteres especiales sin escapar: las comillas dobles dentro de una cadena deben escaparse:
"El libro \"Don Quijote\"".
Conceptos relacionados
Preguntas frecuentes
¿Qué diferencia hay entre JSON y JavaScript?
¿Se pueden incluir comentarios en JSON?
¿Cuándo usar JSON frente a XML?
Ver todas las herramientas de Utilidades.