JSON es el formato dominante de intercambio de datos en la web moderna. Es simple en la superficie — un puñado de tipos primitivos, objetos con claves string y arrays — pero su rigor pilla a desarrolladores todos los días. Esta guía revisa la estructura, las trampas de sintaxis que hacen fallar la validación, cuándo formatear y cuándo minificar, y las variantes más laxas que te encontrarás.
Estructura de JSON
Todo documento JSON es un objeto (envuelto en { } con pares clave–valor separados por comas) o un array (envuelto en [ ] con valores separados por comas). Los valores son strings (entre comillas dobles), números, booleanos (true/false), null, objetos o arrays. Las claves siempre deben ser strings entre comillas dobles — ni comillas simples ni identificadores sin comillar.
Errores de sintaxis que cuestan horas
- Comas finales —
[1, 2, 3,]vale en JavaScript pero es ilegal en JSON. El último elemento no puede llevar coma final. - Comillas simples —
{'clave': 'valor'}es JavaScript, no JSON. Claves y valores string deben ir entre comillas dobles. - Comentarios — JSON no tiene sintaxis de comentarios.
// notao/* bloque */hace fallar aJSON.parse. - Claves sin comillas —
{nombre: "Daytics"}falla. Debe ser{"nombre": "Daytics"}. - Caracteres de control en strings — saltos de línea, tabulaciones o nulls literales dentro de un string sin escapar.
- NaN e Infinity — no son números JSON válidos. Serialízalos como string o
null.
Pretty-print vs minificar
El JSON con formato es para humanos: la indentación y los saltos de línea ayudan a leer la estructura y comparar valores. Úsalo en archivos de configuración, documentación y logs de depuración. El minificado es para máquinas: todo en una línea, sin espacios, payload mínimo. Úsalo cuando el JSON viaja por red o se almacena a gran escala. La mayoría de herramientas alternan con una llamada (JSON.stringify(obj, null, 2) para pretty, JSON.stringify(obj) para minify).
JSON5 y JSONC
Cuando necesitas comentarios y comas finales existen dos superconjuntos habituales. JSON5 admite strings con comillas simples, claves sin comillar, comentarios, comas finales, hex y strings multilínea. JSONC — usado por VS Code — es más estricto: sólo añade comentarios sobre JSON puro. Ninguno se parsea universalmente; convierte a JSON estricto antes de enviarlo por red.
Tamaño y rendimiento
Minificar JSON formateado recorta el tamaño en un 15–30%. La compresión gzip aplana esa diferencia, así que para JSON servido por HTTP, gzip suele ganar al minificado. Para localStorage, IndexedDB y payloads móviles limitados, minificar sigue importando — cada byte cuenta.
Validar como costumbre
Cuando un sistema rechace tu JSON, pégalo en un validador antes de editar. Nueve de cada diez errores son una coma final que no viste, una comilla simple accidental o un carácter de control colado. Un validador señala la línea y columna exactas, ahorrándote la media hora de revisión visual que habrías hecho.
