Formateador JSON
Pega un blob JSON — minificado, escapado, o directamente de una línea de registro — y obtén una presentación con la cantidad de indentación que elijas. Valida al analizar y muestra la línea y columna exactas de cualquier error. Opcionalmente, ordena las claves de los objetos alfabéticamente, lo que facilita la lectura de diferencias entre dos respuestas de API.
Cómo formatear JSON
-
1
Pega el JSON
Minificado, escapado dentro de una cadena, o envuelto en un callback JSONP — el analizador elimina todo eso.
-
2
Elige la indentación
2 espacios, 4 espacios, una tabulación, o compacto (una línea para cargas pequeñas).
-
3
Alternar orden de claves
Ordena alfabéticamente las claves de los objetos para facilitar la comparación entre dos respuestas.
-
4
Copiar o descargar
Copia al portapapeles con un clic, o guarda como un archivo `.json`.
Lo que maneja el formateador
- Entrada minificada:
{"a":1,"b":[1,2,3]}se convierte en una presentación adecuada. - JSON escapado en cadenas: una cadena JSON que contiene
"{\"nested\":true}"puede ser desenrollada y formateada. - Callbacks JSONP:
callback({...})se reduce a solo{...}. - BOM y espacios en blanco iniciales: eliminados automáticamente.
- Comentarios: los comentarios al estilo JSONC
//y/* */son tolerados en modo “benigno” pero se eliminan de la salida (JSON estricto no tiene comentarios).
Por qué formatear JSON
- Diferencias: un documento JSON de una sola línea con miles de claves es ilegible en un
git diff. Presentado, cada clave es una línea. - Depuración: las estructuras anidadas son más fáciles de navegar visualmente con indentación.
- Documentación: los ejemplos de API siempre deben estar formateados, ordenados y estables entre reemisiones.
- Configuraciones: los archivos de configuración JSON deben estar presentados en el repositorio para facilitar la lectura; el tiempo de ejecución puede analizar cualquiera de las formas.
Convenciones de indentación
| Contexto | Indentación típica |
|---|---|
npm package.json |
2 espacios |
| AWS CloudFormation | 2 espacios |
| Java / .NET heredado | 4 espacios |
| Configuraciones en VCS | 2 espacios (la consistencia en todo el proyecto es lo más importante) |
Ordenar claves es controvertido: hace que las diferencias sean más limpias pero cambia el orden en disco de las configuraciones canónicas. Elige una convención de proyecto y mantente en ella.
Errores de validación que verás
| Error | Solución |
|---|---|
Token inesperado ' en la posición X |
Usaste comillas simples; cambia a comillas dobles |
Fin inesperado de la entrada JSON |
Falta una llave o corchete de cierre |
Token inesperado , en la posición X |
Coma final; elimínala |
Token inesperado a en la posición X |
Clave sin comillas o literal NaN/undefined |
Clave duplicada "foo" (modo benigno) |
La especificación JSON lo permite; la mayoría de los analizadores mantienen la última |
Errores comunes
- Copiar JSON con entidades HTML.
"no se analizará; decodifica primero. - Mezclar estricto y benigno. Usa el análisis benigno solo para inspección; nunca guardes JSON benigno en configuraciones de producción.
- Formatear un archivo que ya está formateado en un estilo diferente. El formateador lo hará felizmente, pero crearás una diferencia ruidosa.
Preguntas frecuentes
No. El análisis y el formateo se realizan en tu navegador. El contenido nunca sale de tu pestaña — seguro para pegar respuestas de API con tokens, configuraciones internas o cargas de staging.
El formateador presenta JSON válido. El validador verifica contra un esquema JSON. Ambos realizan una verificación de análisis, pero la validación es un paso separado que pregunta “¿esto coincide con mi esquema?” en lugar de solo “¿es esto JSON válido?”.
Sí. La opción “ordenar claves” ordena todas las claves de los objetos en cada nivel de anidación, de forma recursiva. Los arreglos mantienen su orden original porque el orden de los arreglos es semánticamente significativo en JSON.
Limitado por la memoria del navegador. Hasta ~50 MB funciona en hardware moderno. Más allá de eso, considera jq desde la línea de comandos — transmite en lugar de cargar todo el documento.