FreeToGenerate.com

Funciona por completo en tu navegador: nada de lo que pegues se sube a ningún sitio.

Prueba

Se analiza en esta pestaña contra TOML v1.0.0; no se sube nada. El analizador saca 210 sobre 210 en el propio conjunto de pruebas de conformidad de la especificación.

Qué se perdió en la conversión

No se perdió nada.

Todos los valores de este documento tienen un equivalente en JSON que significa lo mismo. No siempre es así: los ejemplos de arriba incluyen casos en los que no lo es.

También disponible en: English · Português · Français · العربية

Convertir TOML a JSON

Pega TOML, obtén JSON y descubre exactamente qué valores no pudo llevarse JSON.

¿Qué es un conversor de TOML a JSON?

TOML es un formato de configuración pensado para que resulte obvio a quien lo lee: secciones entre corchetes, claves y valores separados por un igual, y ningún espacio en blanco significativo que se pueda equivocar. Es lo que usan Cargo en Rust, el pyproject.toml de Python y muchísimas otras herramientas. JSON es lo que los programas se pasan entre sí. Un conversor transforma uno en el otro, y este lo hace en tu navegador.

La conversión no es un simple cambio de etiquetas, y ahí está lo interesante. TOML distingue más clases de valor de las que caben en JSON, así que se destruye información por el camino. La mayoría de los conversores lo hacen en silencio. Este enumera cada valor que ha tenido que aplanar y en qué ruta estaba, para que decidas si te importa antes de que la salida vaya a ninguna parte.

El analizador se comprueba contra el propio conjunto de conformidad del proyecto TOML: 210 documentos válidos que deben producir un resultado exacto y 499 que deben rechazarse. Analiza los 210 correctamente y rechaza los 499 que realmente puede ver: las seis excepciones son documentos con bytes UTF-8 inválidos, que ningún analizador que lea un campo de texto del navegador puede encontrarse jamás.

Cómo convertir TOML a JSON

  1. Pega tu TOML. Cualquier cosa válida en TOML v1.0.0: tablas, arrays de tablas, tablas en línea, claves con puntos, cadenas multilínea. Los botones de ejemplo cargan uno de cada caso interesante.
  2. Lee el JSON. Aparece al momento, con sangría de dos espacios, y hay un botón para copiarlo. Si el documento no se analiza, obtienes la regla que se ha incumplido y la línea y columna donde ocurrió.
  3. Mira el panel de pérdidas de abajo. Nombra cada valor que JSON no ha podido representar fielmente, con su ruta. En un archivo de configuración corriente dice que no se ha perdido nada, y eso es una medición y no un consuelo.

Lo que JSON no puede llevarse

TOML tiene cuatro tipos distintos de fecha y hora. Una fecha-hora con desfase fija un instante; una fecha-hora local no lleva desfase; una fecha local es un día sin hora; una hora local es una hora sin día. Los cuatro son valores de primera clase con su propia sintaxis. JSON no tiene ningún tipo de fecha, así que los cuatro llegan como cadenas entrecomilladas, indistinguibles de una cadena que simplemente parece una fecha. Carga el segundo ejemplo de arriba y el panel los nombra los cuatro.

TOML también separa enteros de decimales, y JSON no. Eso tiene dos consecuencias. Un decimal escrito 1.0 sale como 1 y ya no se distingue del entero que tiene al lado. Y un entero de 64 bits —TOML garantiza el rango completo con signo— no puede sobrevivir: los números de JavaScript solo son exactos hasta unos nueve billones largos, así que 9223372036854775807 vuelve como 9223372036854776000. El tercer ejemplo enseña las dos cosas.

La prueba más clara de que esto es un problema real y no una pedantería es el propio conjunto de pruebas del proyecto TOML. Sus salidas esperadas no son JSON normal: cada valor escalar va envuelto en un objeto que lleva su tipo, con ocho etiquetas distintas. Quienes escribieron las pruebas de conformidad tampoco pudieron expresar los valores de TOML en JSON, así que se inventaron una codificación que dice qué es cada valor. El panel de pérdidas de este conversor es la misma confesión, hecha donde puedes actuar sobre ella.

Por qué aquí no hay un botón de JSON a TOML

La dirección contraria tiene un problema sin solución honesta, y merece la pena decirlo en vez de esconderlo detrás de una función a medias. TOML no tiene null. No hay ninguna forma de escribirlo en toda la gramática: ni palabra clave, ni valor vacío, nada. Una clave o tiene valor o no está.

Así que un documento JSON que contenga null no se puede convertir. Las opciones son quitar la clave, lo que cambia en silencio el significado del documento, o escribir algo que parezca null y en realidad sea la cadena de cuatro letras, que es peor. Ninguna de las dos es una conversión. Una herramienta que ofrezca el botón tiene que elegir una y normalmente no te dice cuál.

Hay problemas menores en la misma dirección —JSON admite una clave vacía, y arrays de formas mezcladas que la sintaxis de tablas de TOML no expresa con limpieza— pero null es el que no tiene respuesta ninguna. Si necesitas ir hacia allá, lo honesto es decidir antes qué significan esos null en tu configuración, porque eso solo lo sabes tú.

Otras cosas que conviene saber

TOML es más estricto de lo que parece, y este analizador se atiene a ello. Una clave no se puede definir dos veces, una tabla no se puede reabrir con una segunda cabecera, y una tabla en línea queda cerrada en cuanto se escribe, así que una [sección] posterior no le puede añadir nada. Las fechas se validan en vez de desbordarse, así que 2026-02-30 es un error y no el 2 de marzo. Los enteros no admiten ceros a la izquierda. Cada una de estas reglas la comprueba el conjunto de conformidad, y cada una es un error real evitado en un archivo de configuración.

Los comentarios y el formato no sobreviven. JSON no tiene sintaxis de comentarios, así que todo lo que va detrás de una # desaparece, junto con tus líneas en blanco, el orden de tus claves dentro de una tabla y tu elección de comillas. Eso es inherente al formato de destino, no una carencia de la herramienta, y es la razón de que convertir a JSON una configuración mantenida a mano sea normalmente un viaje de ida.

El analizador acepta TOML v1.0.0, la versión publicada. El borrador 1.1.0, aún sin terminar, añade cosas que aquí no se aceptan —comas finales en las tablas en línea, entre otras— y es deliberado: un conversor que acepte un borrador que nadie ha publicado leerá tan campante archivos que las herramientas reales rechazan.

¿Por qué es gratis?

El análisis y la conversión ocurren los dos en tu navegador. Nada de lo que pegas se sube, se registra ni se guarda: cerrar la pestaña es todo el borrado que hace falta. Aquí importa, porque los archivos de configuración son justo lo que suele llevar un nombre de host, una ruta o una clave que preferirías no entregar al servidor de un desconocido.

Sin cuenta, sin registro, sin límite de tamaño y sin marca de agua en nada de lo que copies.