Formatea, valida y minifica JSON.
Guía de JSON
JSON (JavaScript Object Notation) is a lightweight data exchange format that has become a standard in modern programming.Es fácil de leer y escribir para las personas, y fácil de analizar y generar para las máquinas. JSON es independiente del lenguaje de programación, lo que lo hace ideal para la comunicación entre distintos sistemas y aplicaciones web.
La estructura JSON se basa en pares clave-valor y listas ordenadas de valores.Los objetos JSON se encierran entre llaves {} y contienen cero o más pares clave:valor, separados por comas.Los arrays JSON se encierran entre corchetes [] y contienen una lista ordenada de valores.Los valores pueden ser cadenas (entre comillas), números, booleanos (true/false), null, objetos o arrays.
Formatear JSON mejora la legibilidad del código.Añadir sangría y saltos de línea hace la estructura de datos más transparente, algo muy valioso al depurar y analizar datos. La minificación (eliminar espacios) reduce el tamaño del archivo, lo que importa para el rendimiento de las aplicaciones web, sobre todo al transmitir datos por la red.
La validación de JSON es un paso clave antes de procesar los datos.Un JSON no válido puede provocar errores de aplicación y comportamientos inesperados. Los problemas habituales son comas ausentes, comillas incorrectas, comas finales en listas o el uso de comillas simples en lugar de dobles. Las herramientas de validación ayudan a localizar y corregir errores rápidamente.
Los resultados tienen carácter informativo. Contrástalos con otras fuentes.
Un JSON con clave repetida se analiza sin problemas y tira dos valores
Analiza {"id": 1, "id": 2, "id": 3} y obtienes {"id": 3}. Sin error, sin aviso: gana la última aparición y las anteriores desaparecen. La especificación lo permite, todos los analizadores habituales lo hacen, y significa que una clave duplicada en un archivo de configuración no es un error de sintaxis del que te vayan a avisar.
Cómo funciona
- Formatea y valida JSON, indicando la posición del error de sintaxis y no solo que existe uno.
- Minifica para el transporte e indenta para la lectura, que son tareas distintas sobre los mismos datos.
- Saca a la luz los problemas estructurales que un analizador acepta en silencio.
claves duplicadas → gana la última aparición, en silencio enteros por encima de 2⁵³ − 1 → redondeados al analizar, en silencio NaN e Infinity → null undefined en un objeto → la clave se elimina undefined en un array → null BigInt → lanza TypeError
Ejemplo resuelto
Tres cosas que un analizador hace con JSON válido sin quejarse.
- {"id": 1, "id": 2, "id": 3} → {"id": 3}
- {"id": 9007199254740993} → {"id": 9007199254740992}
- {"id": 1770000000123456789} → {"id": 1770000000123456800}
- {a: undefined, b: 1} → {"b": 1}: la clave desaparece
- [undefined, 1] → [null, 1]: pero aquí se convierte en null
El mismo valor undefined se elimina dentro de un objeto y se conserva como null dentro de un array. Nada de esto produce un error, y por eso aflora mucho después como un campo que falta o un identificador que ya no coincide con nada.
Cómo leer el resultado
- Los identificadores grandes son el caso más dañino. Un identificador de 19 dígitos sale de JSON.parse como un número ligeramente distinto, así que las búsquedas fallan contra una base de datos que guardó el original. Transmite esos identificadores como cadenas: es exactamente por eso que las grandes API devuelven id e id_str juntos.
- JSON no tiene comentarios, ni comas finales, ni tipo fecha. Las fechas sobreviven solo como cadenas ISO por convención, así que un viaje de ida y vuelta por JSON convierte un Date en texto y no lo devolverá sin un tratamiento explícito.
- La indentación cuesta más de lo que se cree: la muestra de aquí crece un 84,7% al formatearla con dos espacios. Formatea para las personas que lo leen y minifica todo lo que cruce una red, porque la diferencia se acerca al doble.
- El orden de las claves lo conservan todas las implementaciones importantes, pero la especificación no lo garantiza. Confiar en él funciona hasta que deja de hacerlo, y comparar dos documentos JSON por igualdad de cadenas señalará diferencias que son puramente de orden.
Preguntas frecuentes
- ¿Por qué cambió mi identificador tras un viaje de ida y vuelta?
- Superaba 2⁵³ − 1 y se redondeó al valor representable más cercano. 1770000000123456789 vuelve como 1770000000123456800. La solución es llevar los identificadores grandes como cadenas, porque ningún cuidado en el analizador recupera dígitos ya perdidos.
- ¿Una clave duplicada hace inválido el JSON?
- No. La especificación lo permite y los analizadores lo resuelven quedándose con la última aparición. Eso lo convierte en un peligro real en configuraciones editadas a mano, donde una clave repetida sobrescribe en silencio un ajuste anterior y nada informa del conflicto.