Herramienta de Formato JSON
¿Qué es el Formateador JSON?
El formateador JSON hace legible JSON compacto o desordenado añadiendo indentación, saltos de línea y estructura visible. JSON se usa en respuestas de API, configuraciones, logs, feature flags, datos de prueba e integraciones no-code, donde una coma faltante, comillas incorrectas o un valor anidado inesperado pueden causar errores de parseo. La herramienta ayuda a inspeccionar objetos, arrays, claves, valores y posibles zonas de error rápidamente, y también permite volver a compactar cuando se necesita una carga menor. El formateo no cambia el significado de los datos ni valida automáticamente un esquema de negocio. En APIs productivas deben revisarse tipos, campos obligatorios, null y contratos de versión.
Cómo usar
Cómo usar
- Pega o introduce datos JSON en el cuadro de entrada izquierdo
- Selecciona el tamaño de sangría (2 espacios, 4 espacios o Tab)
- Pulsa Format para embellecer o Minify para eliminar espacios en blanco
- Los resultados aparecen automáticamente a la derecha con resaltado de sintaxis
- Pulsa Copy o Download para guardar el resultado
Notas de validación JSON
- El formateo confirma que el texto es JSON válido, pero no garantiza que los datos coincidan con el esquema de tu negocio.
- Cuando aparezcan errores, revisa la línea y la columna indicadas en busca de comillas simples, comas finales, comentarios o caracteres de control sin escapar.
Casos de uso
Principio técnico
JSON (JavaScript Object Notation) está definido por RFC 8259 / ECMA-404. La gramática es un subconjunto estricto de los literales de objeto de JavaScript: las cadenas deben ir entre comillas dobles, las claves deben estar entrecomilladas, las comas finales son ilegales y los comentarios están prohibidos. Un formateador analiza el documento con `JSON.parse()` en el grafo de objetos del lenguaje anfitrión, y luego lo reserializa mediante `JSON.stringify(value, replacer, indent)` donde indent es un número (1-10 espacios) o una cadena (`'\t'`). El análisis es O(n) y generalmente es más rápido que la fase de stringify porque la construcción de la salida asigna nuevas cadenas. El manejo de números sigue la precisión doble de IEEE 754: los enteros mayores que `Number.MAX_SAFE_INTEGER` (2^53 - 1 = 9007199254740991) pierden precisión, por lo que `9007199254740993` se redondea a `9007199254740992`. Los decimales periódicos como `0.1 + 0.2` se resuelven como `0.30000000000000004` tras el análisis. Las cadenas Unicode permiten escapes `\uXXXX` incluyendo pares sustitutos (`\uD83D\uDE00` -> emoji); el parser rechaza sustitutos solitarios sin pareja. El espacio en blanco solo es significativo dentro de las cadenas: cualquier combinación de espacio, tabulador, LF, CR entre tokens se analiza de forma idéntica. Las relajaciones no estándar comunes son JSON5 (comentarios, comas finales, claves sin comillas) y JSONC (configuración de VS Code). El JSON estándar no las permite y `JSON.parse` lanza `SyntaxError` al encontrarlas. Las alternativas de streaming como NDJSON (un objeto por línea) y JSON Lines evitan cargar documentos completos en memoria. Para entradas profundamente anidadas, el límite de pila de V8 (~10,000 frames) limita los parsers basados en recursión; los parsers de producción usan máquinas de estado iterativas para elevar ese límite.
- Gramática RFC 8259 / ECMA-404: seis tipos de valor (objeto, array, cadena, número, true/false, null); cadenas entre comillas dobles; claves obligatoriamente entrecomilladas; sin comas finales; sin comentarios.
- `JSON.parse(text)` se ejecuta en O(n) y lanza `SyntaxError` con desplazamiento de carácter en entradas inválidas; `JSON.stringify(value, replacer, indent)` produce salida formateada con indentación de 2-10 espacios o `'\t'`.
- Precisión numérica IEEE 754: `Number.MAX_SAFE_INTEGER = 2^53 - 1`; los enteros por encima de esto se redondean al double representable más cercano, por lo que los IDs de chat y los IDs Snowflake de Twitter deben transportarse como cadenas.
- Los escapes Unicode `\uXXXX` soportan todo el BMP; los caracteres fuera del BMP requieren codificación por par sustituto `\uD83D\uDE00`; el parser rechaza sustitutos solitarios sin pareja según RFC 8259 §8.2.
- Fallos de análisis comunes: cadenas entre comillas simples (`'foo'`), coma final tras el último elemento de array/objeto, caracteres de control sin escapar dentro de cadenas, barra invertida sin escapar, cierre `}`/`]` faltante, BOM (`\uFEFF`) al inicio.
- Las referencias circulares lanzan `TypeError: cyclic object value` en `JSON.stringify`; usa un callback `replacer` con un WeakSet para romper ciclos, o bibliotecas como `flatted` / `json-stringify-safe`.
- Variantes no estándar: JSON5 (`.json5`, permite comentarios y comas finales), JSONC (configuración de VS Code), NDJSON / JSON Lines (un objeto por línea, compatible con streaming): todos rechazados por `JSON.parse` estricto.
Ejemplos
Ejemplo de objeto
Entrada:
{
"name": "ToolAct",
"type": "web tool",
"active": true
}
Salida: formateado con indentación de 2 espacios y orden de claves estableEjemplo de array
Entrada: [1,2,3,"a","b","c"]
Salida: formateado con indentación de 2 espacios; los números siguen siendo numéricos, las cadenas conservan las comillasEstructura anidada
Entrada:
{"user":{"name":"Alex","skills":["JavaScript","Python"]}}
Salida:
{
"user": {
"name": "Alex",
"skills": [
"JavaScript",
"Python"
]
}
}
Nota: los objetos y arreglos anidados se indentan recursivamente; elige el ancho de indentación en la barra de herramientasPreguntas frecuentes
¿Qué hace el formateador?
Reformatea JSON: lo embellece con la sangría elegida (2 o 4 espacios) o lo minifica en una sola línea. Valida mientras analiza, así que los errores de sintaxis se reportan con línea y columna.
¿Por qué mi JSON se rechaza como inválido?
Causas habituales: comas finales (legales en JS, ilegales en JSON), cadenas con comillas simples (deben ser dobles), claves sin comillas, comentarios (// o /* */) o corchetes faltantes. La página informa la ubicación del fallo de análisis. JSON5 y JSONC (JSON con comentarios) son superconjuntos de JSON; usa otro parser para esos formatos.
¿Se conserva el orden de las claves?
La especificación JSON dice que el orden de las claves no es significativo, pero la mayoría de los parsers lo conservan en el ida y vuelta. Esta herramienta mantiene el orden de inserción, que suele ser lo que quieres para diffs legibles.
¿Puede manejar archivos JSON muy grandes?
Los navegadores modernos manejan archivos JSON de 10-50 MB, pero pueden ralentizar el editor. Para archivos de cientos de MB, usa un parser en streaming (jq por línea de comandos, herramientas ndjson); los parsers de navegador cargan el árbol completo en memoria.
¿Se sube mi JSON?
No. El análisis y el formateo se ejecutan en tu navegador mediante JSON.parse y JSON.stringify. El JSON pegado no se transmite.
¿Por qué pierden precisión los números grandes?
JSON.parse de JavaScript usa Number, que es doble precisión IEEE 754. Los enteros por encima de 2^53 pierden precisión (por ejemplo, 9007199254740993 se redondea silenciosamente). Para BigInt o un análisis que conserve cadenas, usa un parser personalizado o premarca los números grandes como cadenas en el productor.
¿Qué pasa con JSONC (JSON con comentarios)?
El JSON estricto prohíbe los comentarios. Algunos IDE (los archivos de configuración de VS Code) usan JSONC, que añade comentarios // y /* */. El formateador suele admitir un modo 'JSONC' que conserva los comentarios; en modo estricto los comentarios son un error de sintaxis.