Formateador JSON
Pegue JSON para embellecerlo, minificarlo u ordenar sus claves. Si no se puede analizar, el formateador muestra la línea y la columna donde el analizador se detuvo, con una marca bajo el problema, de modo que una coma que falta en una respuesta de 3000 líneas se encuentra en segundos.
0 caracteres · 0 palabras · 0 líneas
0 caracteres · 0 palabras · 0 líneas
Funciona por completo en esta pestaña del navegador. Su texto nunca se sube ni se guarda.
Tipos de valores JSON
RFC 8259 admite exactamente estos valores. Los objetos y los arreglos se anidan; todo lo demás es una hoja.
| Tipo | Ejemplo | Regla |
|---|---|---|
| Objeto | {"id": 7, "tags": ["a"]} | Las claves deben ser cadenas entre comillas dobles; los miembros se separan con comas, sin coma final. |
| Arreglo | [1, "two", null] | Lista ordenada de valores cualesquiera; se admiten tipos mezclados. |
| Cadena | "caf\u00e9 \"quoted\"" | Solo comillas dobles; los caracteres de control deben escaparse; los escapes \u usan cuatro dígitos hexadecimales. |
| Número | -12.5e3 | Solo decimal: signo menos opcional, sin ceros a la izquierda, fracción y exponente opcionales. Sin NaN ni Infinity. |
| true, false y null | true | En minúsculas y sin comillas. |
Lo que rechaza el analizador
Cada entrada de abajo se pasó al mismo JSON.parse que usa el formateador cuando se generó esta página.
| Entrada | Problema | JSON.parse |
|---|---|---|
{"a": 1,} | Coma final | Rechazado |
{'a': 1} | Cadenas entre comillas simples | Rechazado |
{"a": 1 /* note */} | Comentarios | Rechazado |
{a: 1} | Clave sin comillas | Rechazado |
{"n": NaN} | NaN no es un número JSON | Rechazado |
{"n": 012} | Cero a la izquierda | Rechazado |
{"n": 0x1F} | Número hexadecimal | Rechazado |
Escapes en las cadenas JSON
| Carácter | Escrito en JSON |
|---|---|
| Comilla doble | "\"" |
| Barra invertida | "\\" |
| Salto de línea | "\n" |
| Tabulación | "\t" |
| Retorno de carro | "\r" |
| Carácter de control U+0001 | "\u0001" |
| Barra diagonal (escape opcional) | "/" |
| Letra no ASCII (no necesita escape) | "é" |
Las reglas que cumple un documento JSON válido
JSON está especificado en la RFC 8259 (idéntica en lo sustancial a ECMA-404). Un documento es un único valor: un objeto, un arreglo, una cadena, un número, true, false o null. Las claves de los objetos son siempre cadenas entre comillas dobles. Las cadenas solo usan comillas dobles y deben escapar la comilla, la barra invertida y todos los caracteres de control por debajo de U+0020; por eso las tabulaciones y los saltos de línea dentro de una cadena se escriben como \t y \n. La RFC 8259 exige además UTF-8 para el JSON que se intercambia entre sistemas.
Los números son decimales: sin ceros a la izquierda, sin hexadecimal, sin NaN ni Infinity y sin signo más delante. El formato no tiene comentarios ni comas finales. Estas dos últimas reglas causan la mayoría de los errores reales, porque los literales de objeto de JavaScript, JSON5 y muchos archivos de configuración admiten ambas cosas. La tabla de referencia de abajo se obtuvo pasando cada error habitual por el mismo analizador que usa el formateador.
Embellecer, minificar y ordenar JSON
Embellecer añade saltos de línea y sangría para que la estructura se lea bien; dos espacios es el estilo más común en proyectos JavaScript, cuatro espacios es lo habitual con json.dumps(indent=4) de Python, y las tabulaciones permiten que cada lector elija el ancho. Minificar elimina todos los espacios no significativos, lo que reduce las cargas útiles de las API y hace que un documento quepa en una sola línea para registros o variables de entorno.
Ordenar claves pone en orden alfabético los miembros de cada objeto, de forma recursiva. Los objetos JSON no tienen orden por definición, así que ordenarlos no cambia su significado, pero hace mucho más fácil comparar dos documentos de sistemas distintos. Tenga en cuenta que el análisis convierte los números en dobles de JavaScript: los enteros por encima de 2^53 (9 007 199 254 740 992), como algunos ID de bases de datos, pierden precisión al reformatearse, así que conviene mantenerlos como cadenas.
Del JSON a otros formatos
Un documento formateado se lee mejor, pero a veces hace falta en otra forma. Un arreglo de objetos se convierte en una hoja de cálculo con JSON a CSV, y el conversor de datos pasa archivos completos entre JSON, XML, YAML y CSV.
Preguntas frecuentes
- ¿Por qué el formateador rechaza mi JSON con comentarios?
- El JSON estándar no tiene sintaxis de comentarios; la RFC 8259 la deja fuera a propósito. Quite los comentarios, o mantenga el archivo como JSONC o JSON5 si la herramienta que lo lee admite esos formatos.
- ¿Qué significa "Unexpected token" en un error de JSON?
- El analizador encontró un carácter que no puede aparecer en esa posición, como una comilla simple, una coma final antes de } o una clave sin comillas. La línea y la columna indicadas señalan ese carácter.
- ¿Ordenar las claves cambia los datos del JSON?
- No. El orden de los miembros de un objeto no tiene significado en JSON, así que el documento ordenado es equivalente. El orden de los arreglos sí importa y nunca se cambia.
- ¿Por qué cambió un número largo tras formatear el JSON?
- JavaScript guarda los números como flotantes de 64 bits, que representan enteros exactos solo hasta 2^53. Los ID mayores se redondean al analizarse; transmítalos como cadenas para conservar todas las cifras.
- ¿Se puede formatear un archivo JSON en lugar de pegar el texto?
- Abra el archivo en cualquier editor de texto, seleccione todo y péguelo aquí. Los archivos muy grandes, de decenas de megabytes, pueden ralentizar la pestaña mientras el área de texto los muestra.