Convertir JSON a TOML

Aquí puedes convertir JSON a TOML gratis y sin cuenta: suelta el archivo arriba y en un par de segundos tienes el resultado listo para descargar. La conversión ocurre en tu propio navegador, así que el archivo no se sube nunca. Funciona igual en Windows, macOS y Linux que en iPhone y Android, y sigue funcionando aunque cortes la conexión.

  • Dónde se ejecuta En tu navegador. El archivo no se sube.
  • Sin pérdida No se pierde nada. TOML contiene exactamente lo que contenía JSON.
  • Límite de tamaño Hasta 100 MB por archivo, gratis y sin cuenta.

Hasta 100 archivos a la vez. Mezclar formatos no es problema.

Lo que gana un archivo de configuración al dejar el JSON

El JSON no admite comentarios. Está escrito en la especificación, no es un descuido, y es la razón principal de que mantener configuración en JSON resulte incómodo: el motivo por el que un tiempo de espera son 45 segundos no puede vivir al lado del 45. El TOML sí los admite, y esa suele ser toda la motivación de esta conversión.

El segundo motivo es la planitud. Un JSON de configuración con tres niveles son tres niveles de llaves y mucha sangría; lo mismo en TOML es una línea de cabecera y una lista corta de claves debajo. Los datos no han cambiado, pero el diff que ve quien revisa el cambio de un valor es una línea en vez de un bloque resangrado.

Un JSON que empieza por un corchete no tiene dónde caer

Un documento TOML es una tabla. No puede empezar por una lista como sí puede un documento JSON, así que un archivo cuyo primer carácter es un corchete no tiene nada sobre lo que proyectarse. La conversión no falla: cualquier valor que no sea un objeto se envuelve bajo una clave llamada items, y la salida arranca con bloques repetidos de esa clave.

Eso mantiene el archivo válido y es un marcador de posición, no una respuesta. Ningún conversor puede saber si la herramienta que va a leerlo espera que esa lista se llame dependencies, servers o plugins. Cambia el nombre en la primera línea y el resto del archivo ya está bien: es una edición de una palabra, y está pensada para que se vea en lugar de esconderse.

El nulo de JSON no existe en TOML y desaparece sin más

Este es el fallo que conviene comprobar siempre. El TOML no tiene literal nulo y el escritor no se inventa ninguno: una clave cuyo valor en JSON era nulo simplemente no se escribe. Convierte un documento con una sola clave nula y la salida es un archivo vacío. Convierte una tabla con una clave real y otra nula y solo aparece la real.

Que eso importe depende por completo de la herramienta que lea el resultado. Muchos analizadores de configuración tratan igual una clave ausente y una clave nula —ambas caen en el valor por defecto— y ahí no se ha perdido nada. Otros las distinguen, y ahí la conversión ha cambiado la configuración en silencio. La defensa es buscar nulos en el JSON antes de convertir y no comparar los dos archivos después, porque una línea que falta es mucho más difícil de ver que una línea distinta.

Una lista de objetos se convierte en una lista de tablas

Esta es la parte que sorprende a quien esperaba que el TOML fuera un formato más pobre que el JSON. Una lista de registros se expresa repitiendo la misma cabecera entre dobles corchetes: tres bloques con el mismo nombre son tres servidores, cada uno con sus claves debajo. Es más largo que una lista de JSON y bastante más fácil de editar, porque añadir un cuarto servidor es copiar cinco líneas en lugar de cuadrar corchetes.

Los miembros no tienen por qué coincidir. Una lista en la que el primer objeto tiene identificador y nombre y el segundo añade una región se convierte sin protestar y el TOML sigue siendo válido: cada bloque lleva las claves que tiene. Es una ventaja real frente a los destinos tabulares de este sitio, donde una lista heterogénea hay que reconciliarla en un único juego de columnas antes de escribir nada.

Por qué el TOML reordena tus claves de primer nivel

Una cabecera de tabla en TOML se apropia de todo lo que se escriba por debajo hasta la siguiente cabecera. Eso significa que una clave suelta colocada después de una cabecera pertenece a esa tabla, quisiera o no quisiera su autor. Por eso el escritor sube todos los valores sueltos de primer nivel por encima de la primera cabecera: un objeto con una tabla y un booleano al lado sale con el booleano arriba, una línea en blanco, y luego la tabla.

La salida no está, por tanto, en el orden en que estaba tu JSON, y no puede estarlo. Es la única reordenación que conserva el significado, y cualquier otra cambiaría a qué tabla pertenece una clave. Si la agrupación original importaba por legibilidad, recupérala moviendo bloques de tabla enteros —eso es seguro— y no claves sueltas por encima o por debajo de una cabecera.

Cuatro niveles de anidamiento caben en una sola cabecera

Un JSON con cuatro niveles de objetos se convierte en una línea de cabecera con los nombres separados por puntos y la clave final debajo. El TOML expresa la profundidad en la cabecera y no en la sangría, que es la razón de que una configuración muy estructurada suela salir más corta y más plana de lo que era en JSON.

También tiene un límite, que es de gusto y no de validez. Una cabecera de cinco segmentos es legal y no la disfruta nadie. Si el archivo convertido tiene cabeceras de más de tres o cuatro tramos, suele ser señal de que la configuración pide dividirse en archivos o en herramientas distintas, y la conversión no ha hecho más que volver visible un problema que ya estaba.

Los comentarios son el objetivo y la conversión no los escribe

La salida no lleva ni un comentario, porque la entrada no tenía dónde guardarlos. El JSON no los transporta, así que no hay nada que traducir: no es una carencia del conversor, es exactamente el motivo por el que valía la pena salir del JSON.

Eso convierte los cinco minutos siguientes a la conversión en la parte más aprovechable del ejercicio. El archivo TOML es la versión de esta configuración capaz de sostener lo que se sabe sobre ella: qué valores se pueden tocar sin miedo, cuál tiene que coincidir con otro de otro repositorio, por qué un límite está donde está. Hoy ese conocimiento vive en la cabeza de alguien o en un mensaje de commit, y este es el único momento en que escribirlo en el archivo no cuesta nada.

Las fechas siguen siendo texto entrecomillado

El TOML tiene cuatro tipos de fecha y hora, incluida una fecha con desfase horario que es un valor de primera clase y no una cadena. El JSON no tiene ninguno: da cadenas, números, booleanos, nulos, listas y objetos, y toda marca de tiempo de todo archivo JSON del mundo es una de las dos primeras cosas por convención.

Así que un valor JSON con una fecha en formato ISO se escribe como una cadena TOML entrecomillada, lo cual es correcto y no es lo que el formato sabría expresar. Si la herramienta que va a leerlo quiere una fecha de verdad, quita las comillas a mano en esas líneas. Después se interpreta como fecha y no hay que cambiar nada más en el archivo.

Cómo revisar el TOML antes de confirmarlo en el repositorio

La comprobación más barata es un viaje de ida y vuelta: convierte el TOML otra vez a JSON y compáralo con el que tenías. Deberían faltar las claves que valían nulo y nada más, lo cual transforma una inquietud difusa en un diff que se lee en unos segundos.

La segunda comprobación es la propia herramienta. Cargo, Hugo y casi todo el empaquetado de Python te dicen enseguida si el documento se interpreta y si las claves están donde ellos las esperan, y eso detecta lo único que un viaje de ida y vuelta no puede detectar: un archivo perfectamente convertido cuya clave de primer nivel se sigue llamando items porque nadie la renombró.

Dónde se ejecuta esta conversión

En esta pestaña, en tu procesador. Las dos mitades son JavaScript —el lector de JSON es el del propio navegador y el escritor de TOML es una biblioteca pequeña que se carga bajo demanda—, así que ninguna petición lleva el archivo a ningún sitio, y no hay cuenta, ni cola, ni cupo diario. El tope es de 100 MB por archivo, que en configuración no lo alcanza nadie.

Aquí eso pesa más que en otros tipos de datos. Un archivo de configuración en JSON es justo lo que suele contener nombres de servidores internos, nombres de buckets, cuentas de servicio y de vez en cuando una credencial que alguien pensaba quitar, y subirlo a un conversor web es la parte que de verdad incumpliría una política. Aquí no hay nada que subir.

Cómo convertir JSON a TOML

  1. Suelta tu archivo JSON en esta página, o haz clic para elegir uno.
  2. Elige TOML como destino. La conversión ocurre en tu navegador y el archivo no se sube.
  3. Descarga el archivo TOML terminado.

JSON frente a TOML: qué cambia

JSON frente a TOML
JSONTOML
Nombre completoJavaScript Object NotationTom's Obvious Minimal Language
Extensión de archivo.json.toml
Tipo de medioapplication/jsonapplication/toml
Publicado por primera vez20012013
EspecificaciónRFC 8259TOML 1.0
LicenciaEstándar abiertoEstándar abierto
Situación actualVigenteVigente
Se abre en el navegadorTodos los navegadoresNingún navegador
Considerado en su lugarXML, YAML, NDJSONYAML, INI

Qué se conserva

No se descarta nada. JSON y TOML guardan su contenido sin pérdida, así que la conversión cambia el envoltorio y no la calidad, y puede repetirse sin que el daño se acumule.

Abrir el resultado

Ningún navegador lee TOML. Es el menos portátil de los dos, así que conviene asegurarse de que el destinatario lo acepta antes de enviarlo.

Visual Studio Code lee tanto JSON como TOML, así que puedes comparar el resultado con el original sin un segundo programa.

Para qué sirve cada formato

Los dos apuntan a trabajos distintos: JSON a mover datos entre programas y la web y TOML a la edición. Conviene sopesarlo antes, porque la razón de ser de uno suele ser la razón por la que el otro resulta incómodo.

JSON se publicó en 2001. Está recogido en RFC 8259, y conviene conocerlo si el archivo tiene que sobrevivir a la herramienta que lo escribió.

TOML es de 2013, recogido en TOML 1.0. Visual Studio Code lo lee.

De JSON a TOML: preguntas frecuentes

¿Se sube a algún sitio mi archivo JSON?

No. Esta conversión ocurre por completo en tu navegador, así que el archivo no sale de tu dispositivo. Puedes comprobarlo tú: abre la pestaña de red de las herramientas de desarrollo y convierte algo. Verás la propia página y las peticiones de estadística y publicidad con las que se paga este servicio, y ni una sola que lleve tu archivo.

¿Convertir JSON a TOML es gratis?

Sí. Sin cuenta, sin marca de agua y sin cupo diario que se gaste: se ejecuta en tu propio equipo, así que puedes volver tantas veces como quieras. El navegador procesa archivos de hasta 100 MB, 100 a la vez.

¿Se pierde calidad al convertir JSON a TOML?

No. TOML guarda el mismo contenido sin tirar nada: el resultado es idéntico en calidad al original.

¿Se abre un archivo TOML en el navegador?

Ningún navegador lee TOML. Es el menos portátil de los dos, así que conviene asegurarse de que el destinatario lo acepta antes de enviarlo.

¿Es sin pérdida la conversión de JSON a TOML?

No se descarta nada. JSON y TOML guardan su contenido sin pérdida, así que la conversión cambia el envoltorio y no la calidad, y puede repetirse sin que el daño se acumule.

Más sobre estos formatos