Saltar al contenido

Formateador de JSONBeta

Formatea, minifica o valida JSON, con línea y columna exactas en los errores. Ordena claves, escapa Unicode. Funciona solo en tu navegador, sin subir nada.

0 caracteres · 0 líneas
Modo

0 caracteres · 0 líneas

Cómo usarlo

Pega tu JSON en el cuadro de entrada y el resultado aparece. Elige «Formatear» para aplicar sangría (2 espacios, 4 espacios o un tabulador) y ver la estructura de un vistazo, o «Minificar» para eliminar todos los espacios y saltos de línea innecesarios y reducir el tamaño. «Validar» comprueba la sintaxis sin cambiar nada. Activa «Ordenar claves» para ordenar de forma recursiva las claves de cada objeto en orden alfabético (más exactamente, por unidad de código Unicode), y «Escapar caracteres no ASCII» para convertir emojis o letras con tilde en secuencias \uXXXX. Si el JSON que pegaste no es válido, en lugar del resultado verás un error con la línea y columna exactas del problema y un pequeño fragmento del texto de alrededor.

Formatear, minificar y validar son tres tareas distintas

Los tres modos trabajan sobre el mismo JSON, pero con propósitos diferentes. «Formatear» añade sangría y saltos de línea para que una persona pueda leer el documento con facilidad; «Minificar» hace lo contrario, eliminando esos espacios para reducir el tamaño del archivo. Ninguno de los dos cambia los valores reales, salvo las excepciones descritas más abajo en «Los números grandes pueden perder precisión» (un número fuera de rango se convierte en null, una clave duplicada conserva solo su último valor), y una más: un -0 en la entrada se convierte en 0 en la salida. «Validar» no sirve para mostrar nada, sino solo para comprobar si el JSON es sintácticamente correcto. Los tres modos pasan internamente por el mismo analizador, así que formatear o minificar con éxito ya es en sí mismo la prueba de que el JSON era válido.

Errores de sintaxis JSON habituales

La gramática de JSON es sencilla, pero estricta con los detalles. Los problemas más frecuentes son una coma sobrante tras el último elemento de un array u objeto (coma final, por ejemplo [1, 2, 3,]), cadenas o claves entre comillas simples en vez de dobles (JSON solo admite comillas dobles), claves de objeto sin comillas ({name: "a"}), comentarios // o /* */ que quedaron al editar, un cero inicial en un número (01), y confundir con JSON un objeto literal de JavaScript, que puede tener valores undefined o comas finales. Activar «Permitir comentarios y comas finales» limpia automáticamente los comentarios y las comas finales antes de analizar el texto, pero otros errores de sintaxis, como las comillas simples o las claves sin comillas, hay que corregirlos a mano.

JSON frente a JSON5 y JSONC

«JSON» es el estándar estricto definido por RFC 8259 y ECMA-404: sin comentarios, sin comas finales, y las cadenas deben ir entre comillas dobles. «JSON5» y «JSONC» (JSON with Comments, conocido por archivos de configuración de editores como el settings.json de VS Code) son dialectos más permisivos, pensados para escribirse a mano más cómodamente, que permiten comentarios, comas finales y, a veces, claves sin comillas. Esta herramienta comprueba JSON estándar por defecto, pero al activar «Permitir comentarios y comas finales» acepta las costumbres más comunes de JSON5/JSONC —comentarios y comas finales— eliminándolas antes de analizar el texto. Esa opción está diseñada para no tocar los // ni las comas que estén dentro de valores de cadena.

Los números grandes pueden perder precisión

JavaScript tiene un único tipo numérico, un número de coma flotante de doble precisión IEEE 754, que solo puede representar enteros con exactitud hasta 2^53 - 1 (9007199254740991, 16 dígitos). Si un documento JSON contiene un literal entero más largo —por ejemplo, un ID snowflake de 64 bits que usan algunos sistemas—, JSON.parse lo redondeará al valor representable más cercano, cambiando silenciosamente las últimas cifras sin lanzar ningún error. Esta herramienta busca en el texto original, antes de analizarlo, literales enteros de 16 dígitos o más y solo muestra un aviso, sin alterar el valor (convertirlo, por ejemplo, en una cadena de texto cambiaría la forma de tu documento). Si necesitas conservar el valor exacto, guárdalo como cadena de texto desde el origen, o usa una herramienta pensada específicamente para manejar enteros grandes.

Hay otros dos casos en los que los valores cambian sin ningún error, y la herramienta avisa de ambos. Un número demasiado grande para un double, como 1e400, se lee como Infinity y pasa a ser null en el resultado. Y si la misma clave aparece más de una vez en un objeto, JSON.parse conserva solo el último valor y descarta los anteriores sin avisar.

Privacidad

El JSON que pegas se procesa por completo en esta pestaña del navegador y nunca se guarda ni se transmite a ningún sitio. Al cerrar la página, el contenido desaparece.

Fuentes

Preguntas frecuentes

¿Esta herramienta valida contra un JSON Schema, o solo comprueba la sintaxis?

Solo comprueba la sintaxis (RFC 8259 / ECMA-404): que las llaves y corchetes coincidan, que las cadenas vayan entre comillas dobles, que las comas estén bien colocadas, entre otras reglas básicas de JSON. No valida contra un JSON Schema, así que no detecta un campo obligatorio ausente ni un valor con el tipo equivocado. Para eso necesitas una herramienta hecha para ese esquema en concreto.

¿Qué hace exactamente «Permitir comentarios y comas finales», y puedo dejarlo siempre activado?

Con la opción activada, la herramienta elimina los comentarios `//` y `/* */` y las comas sobrantes tras el último elemento de un array u objeto antes de analizar el texto, algo útil para entradas al estilo JSON5/JSONC. No toca los `//` ni las comas que estén dentro de cadenas de texto. Si la dejas siempre activada, también aceptará entradas que en JSON estricto (RFC 8259) serían inválidas por tener comentarios, así que desactívala cuando quieras comprobar el cumplimiento estricto del estándar.

¿Por qué aparece un aviso de que los números pueden perder precisión, y qué debo hacer?

JavaScript tiene un único tipo numérico, un double de coma flotante IEEE 754, que solo representa enteros con exactitud hasta 2^53 - 1 (9007199254740991, 16 dígitos). Si tu JSON contiene un literal entero más largo —por ejemplo, un ID de 64 bits usado por algunos sistemas—, `JSON.parse` puede redondearlo silenciosamente al valor representable más cercano, cambiando las últimas cifras sin lanzar ningún error. Esta herramienta busca en el texto original literales enteros de 16 dígitos o más antes de analizarlo y solo avisa, sin modificar el valor (hacerlo cambiaría la estructura de tu documento). Si necesitas conservar el valor exacto, guárdalo como cadena de texto desde el origen, o usa una herramienta pensada para manejar enteros grandes.

¿Puede procesar archivos JSON grandes? ¿Cuál es el límite?

Sí, hasta unos 10MB directamente en esta pestaña del navegador. Por encima de eso muestra un mensaje en lugar de intentarlo, porque analizar y formatear un documento JSON muy grande en el hilo principal podría congelar la pestaña un momento.

¿El JSON que pego se envía a algún sitio?

No. Todo ocurre localmente en esta pestaña del navegador y no se envía nada a ningún servidor. Al cerrar la página, el contenido desaparece.