Ir al contenido
Español
El banco de trabajoHerramientas que no suben nada
Un taller de la asociación ODERSANada sale, nada se guarda, nada nos llega.

El taller · Formatear JSON

Cómo funciona : Formatear JSON

El analizador está escrito aquí, a mano, y no tomado prestado del navegador: porque el mensaje de error del navegador no lo normaliza ninguna especificación, y cambia de un navegador a otro. Este dice la línea, la columna y qué se esperaba, y lo dice igual en todas partes.

Abrir la herramienta

Un archivo JSON que un programa rechaza, y un mensaje de error que no dice nada: es el pan de cada día de quien toca una configuración o una exportación de datos. Así que el primer trabajo de un validador es decir DÓNDE, con precisión, y qué se esperaba en ese sitio.

Por eso el analizador está escrito aquí en vez de tomarlo prestado del navegador. La norma del lenguaje impone el TIPO de la excepción que el navegador debe lanzar, no su texto: Firefox da la línea y la columna, Chrome da una posición en bytes, y Safari no da ni una cosa ni la otra. Una herramienta que copie ese mensaje devuelve por tanto un diagnóstico distinto según el navegador de cada persona. El nuestro cuenta él mismo sus líneas y sus columnas.

Y ve tres cosas que la función del navegador se traga en silencio. Las CLAVES REPETIDAS: la norma dice que «deberían» ser únicas y que el comportamiento de un programa que las recibe es imprevisible; en la práctica, la última pisa a la primera, y un dato desaparece sin decir nada. Los medios caracteres Unicode que se quedan solos, que no codifican nada y rompen la mitad de los lectores que vienen después. Y la marca de orden de bytes al principio del archivo, que la norma prohíbe añadir.

Cómo funciona

  1. Pegue su JSON. No sale de su dispositivo, cosa que importa en una exportación de datos o en una configuración que lleva identificadores.
  2. Elija la indentación, y el orden de las claves si después quiere comparar dos archivos.
  3. Si el JSON no es válido, lea la línea, la columna y el signo que se esperaba. Si es válido, lea la tabla de avisos: ahí es donde se esconden las claves repetidas.

Formatos aceptados

JSON tal como lo define la norma: sin comentarios, sin coma de más antes de una llave de cierre, sin claves sin comillas. Esos tres desvíos son frecuentes y la herramienta los rechaza nombrándolos, porque un programa también los va a rechazar.

Texto en formato JSON

Hasta 400 000 caracteres. El resultado se descarga en .json o se copia con un clic.

Ver la matriz de compatibilidad

Sus límites

La herramienta aplica la norma, sin las tolerancias de ciertos programas

Los comentarios, las comas de más y las claves sin comillas los aceptan varias herramientas de desarrollo, pero NO son JSON: la norma no los prevé, y el programa que rechaza su archivo tiene razón. Nosotros tampoco los aceptamos, porque un validador permisivo le dejaría creer que su archivo va a pasar en otro sitio.

Las claves repetidas se AVISAN, nunca se corrigen en su lugar

La norma escribe que los nombres de un objeto deberían ser únicos, y que si no lo son, el comportamiento del programa que recibe esos datos es imprevisible. En la práctica, casi todas las implementaciones se quedan con el ÚLTIMO valor: un dato desaparece sin decir nada. La herramienta las nombra con su ruta y su línea, pero el archivo con formato refleja la misma decisión que todo el mundo, el último valor, porque lo contrario sería una sorpresa.

Un número muy grande puede perder cifras, y no es cosa nuestra

El lenguaje del navegador solo sabe representar exactamente los enteros hasta unos nueve mil billones de millones. Un identificador mayor escrito en un JSON pierde cifras nada más leerlo, en cualquier herramienta que pase por ese lenguaje. Por eso las interfaces serias transportan los identificadores grandes como cadenas entre comillas, y si usted ve uno desnudo dentro de un archivo, el problema ya existía antes de llegar aquí.

El orden de las claves se conserva, salvo las que parecen números

Un objeto de JavaScript pone SIEMPRE las claves que se escriben como enteros al principio, en orden creciente, sea cual sea su posición original. Es una regla del lenguaje, no una decisión nuestra, y ninguna herramienta que pase por ese lenguaje se libra. En un objeto cuyas claves son «10», «2», «1», el orden original se pierde. Decirlo valía más que callarlo.

Preguntas sobre esta herramienta

¿Mis datos se envían a alguna parte?

No, y aquí importa más que en otros sitios: una configuración en formato JSON lleva a menudo identificadores, direcciones internas y a veces claves de acceso. Compruébelo en treinta segundos: abra el inspector con la tecla F12, pestaña «Red», vacíe la lista, y después pegue su JSON y valídelo. No aparece ni una línea. Corte su conexión y vuelva a hacerlo.

¿Por qué rechazan mi JSON con comentarios?

Porque no es JSON. La norma no prevé ningún comentario, y su autor explicó que los quitó a propósito. Varias herramientas de desarrollo los aceptan por comodidad, cosa que alimenta la confusión: su archivo pasa en su casa y falla en producción. Nosotros rechazamos por el mismo motivo por el que un validador debe rechazar: para decirle la verdad sobre lo que su archivo es.

¿Para qué sirve ordenar las claves?

Para comparar. Dos exportaciones de los mismos datos hechas por dos programas distintos suelen salir con las claves en distinto orden: una comparación en bruto devuelve entonces cientos de diferencias falsas. Ordene las dos, y péguelas luego en la herramienta «Comparar dos textos» del mismo rincón: solo quedarán las diferencias de verdad. Es el truco más útil de esta página.

Hablan de claves repetidas: ¿de verdad están permitidas?

La norma escribe que los nombres de un objeto «deberían» ser únicos, y que si no lo son, el comportamiento del programa que recibe los datos se vuelve imprevisible. Así que ni están prohibidas ni son seguras. En la práctica, casi todas las implementaciones se quedan con el último valor y tiran el primero sin decir nada: si tiene dos veces la clave «precio» dentro del mismo objeto, uno de los dos precios ya no existe. Es exactamente la clase de problema que se busca durante dos horas, y por eso lo avisamos.

Mi identificador de diecinueve cifras cambia después de dar formato.

Sí, y no es cosa nuestra: es un límite del lenguaje que usan todos los navegadores, que solo representa exactamente los enteros hasta unos nueve mil billones de millones. Por encima, las últimas cifras cambian nada más leerlas, en cualquier herramienta que pase por ese lenguaje. Por eso las interfaces serias transportan los identificadores grandes entre comillas, como cadenas. Si el suyo va desnudo dentro del archivo, el problema existía antes que usted.