Saltar al contenido

Formatear JSON

Ordena y valida un JSON ilegible señalando exactamente en qué línea está el error.

El JSON se analiza en tu navegador. Nada se envía a ningún servidor, cosa que importa cuando lo que estás pegando es la respuesta de una API con datos de clientes o una clave dentro.

Un JSON minificado de doscientos kilobytes en una sola línea es ilegible, y un JSON con un error en la línea 300 es peor: no lo lee ni tu programa ni tú. Esta herramienta hace las dos cosas que hacen falta —ordenarlo y decirte exactamente dónde está el fallo— sin mandar tus datos a ninguna parte.

JSON no es JavaScript, y ahí empiezan los problemas

JSON nació como un subconjunto de la sintaxis de objetos de JavaScript, y por eso se parecen tanto. Pero es un subconjunto mucho más estricto, y casi todos los errores que verás vienen de escribir JSON con la mano acostumbrada a JavaScript:

  • Las claves van entre comillas dobles. {nombre: "Ana"} es JavaScript válido y JSON inválido. Debe ser {"nombre": "Ana"}.
  • Comillas dobles, nunca simples. Ni en las claves ni en los valores.
  • Nada de coma final. [1, 2, 3,] lo acepta JavaScript desde hace años; JSON no lo ha aceptado nunca.
  • Sin comentarios. Ni // ni /* */. Es la carencia que más se echa de menos en los archivos de configuración, y la razón de que existan formatos como JSONC o YAML.
  • Valores en minúscula. true, false y null. Nada de True, None ni undefined: eso es Python o JavaScript, según el caso.
  • Números finitos. NaN e Infinity no existen en JSON, aunque tu lenguaje los produzca.

El error se señala donde está, no donde se nota

Cuando algo falla, verás la línea, la columna y las líneas de alrededor con la culpable marcada. Hay una trampa que conviene conocer: el analizador se queja donde deja de entender el documento, y eso a veces está unas líneas más abajo de donde está el error real.

El caso típico es una llave sin cerrar: el archivo sigue teniendo sentido durante muchas líneas, y el error salta al final. Si la línea señalada parece correcta, mira hacia arriba buscando un cierre que falta.

Deliberadamente no intentamos reparar el documento por ti. Un reparador automático puede producir un JSON válido con los datos en el sitio equivocado, y eso pasa desapercibido; un error claro, no.

Formatear, minificar y ordenar

Formatear añade saltos y sangría para poder leerlo. Dos espacios es la convención más extendida; cuatro se usa en entornos que vienen de Python; el tabulador, en equipos que prefieren que cada cual elija su anchura.

Minificar quita todo lo prescindible. Reduce entre un 15 y un 30% del tamaño, aunque sobre HTTP con compresión la ganancia real es menor: los espacios repetidos son justo lo que mejor comprime gzip.

Ordenar las claves tiene un uso muy concreto: comparar. Dos respuestas de la misma API pueden traer las claves en distinto orden y parecer diferentes sin serlo. Ordenándolas, la comparación enseña solo lo que ha cambiado de verdad. El orden de los arrays no se toca nunca, porque en un array la posición forma parte del dato.

El problema silencioso de los números grandes

JavaScript no tiene enteros: todos los números son de coma flotante de doble precisión. A partir de 9.007.199.254.740.991 deja de poder representarlos exactamente, así que un identificador de diecinueve cifras se redondea al leerlo y vuelve con las últimas cifras cambiadas.

No falla, no avisa: simplemente devuelve otro número. Por eso la herramienta te lo señala cuando lo detecta. El arreglo correcto no está en el formateador sino en el origen: quien genera ese JSON debería mandar los identificadores como texto entre comillas, que es lo que hacen las APIs bien diseñadas precisamente por este motivo.

Claves, profundidad y demás cifras

Bajo el resultado aparecen el número de claves, la profundidad máxima y cuántos objetos y arrays hay. La profundidad es la más útil de las cuatro: un documento anidado siete niveles suele ser un aviso de que la estructura se puede aplanar, y de que quien lo consuma va a sufrir.

Por qué importa que no salga de tu navegador

Piensa en lo que se pega normalmente en un formateador de JSON: la respuesta de una API en producción, un volcado de configuración, un webhook que acaba de fallar. Ahí dentro suele haber correos de clientes, tokens y a veces claves de acceso.

En esta herramienta el análisis lo hace el JSON.parse de tu propio navegador. No hay envío, no hay registro y no hay copia en ningún servidor. Al cerrar la pestaña no queda nada.

Cómo usarlo en 3 pasos

  1. 1Elige tu herramientaBusca lo que necesitas hacer. Cada herramienta va directa al grano.
  2. 2Suelta el archivoArrástralo o búscalo en tu equipo. El trabajo lo hace tu propio navegador.
  3. 3Descarga el resultadoListo en segundos, sin marcas de agua y sin dejar rastro en ningún servidor.

Preguntas frecuentes

¿Por qué me dice que hay un error si el archivo funciona en mi código?

Porque probablemente no sea JSON, sino un objeto de JavaScript. Las claves sin comillas, las comillas simples, los comentarios y la coma detrás del último elemento son legales en JavaScript y no en JSON. Es la causa de la mayoría de los errores que verás aquí.

¿Se puede recuperar un JSON roto automáticamente?

Preferimos no hacerlo. «Arreglar» un JSON adivinando dónde falta una llave puede producir un documento válido con datos mal colocados, y eso es peor que un error claro. Te decimos la línea, la columna y qué pasa; el arreglo lo haces tú, que sabes qué querías escribir.

¿Qué hace lo de ordenar las claves?

Reordena alfabéticamente las claves de todos los objetos, sin tocar el orden de los arrays, donde la posición sí significa algo. Es lo que se hace para comparar dos respuestas de una API y ver qué ha cambiado de verdad.

¿Por qué avisa de números grandes?

Porque JavaScript no distingue enteros y usa números de doble precisión: por encima de 9.007.199.254.740.991 pierde cifras al final. Un identificador de Twitter o de una base de datos puede volver cambiado sin que nadie se entere. La solución la tiene quien genera el JSON: mandarlos como texto.

¿Minificar reduce mucho?

Quitar espacios y saltos suele rebajar entre un 15 y un 30%. Sobre HTTP con compresión gzip la ganancia real es mucho menor, porque los espacios repetidos se comprimen muy bien. Minifica para producción, pero no esperes milagros.

¿Mis datos salen del navegador?

No. Se usa el analizador del propio navegador y todo ocurre en tu dispositivo. Es un detalle importante, porque por un formateador de JSON suelen pasar respuestas de API con datos de clientes y con claves dentro.