TOML a JSON

El Cargo.toml de Rust, el pyproject.toml de Python, el config.toml de Hugo: TOML está por todas partes en la configuración moderna, pero muchas herramientas siguen hablando solo JSON. Pega aquí tu TOML y obtén JSON con formato legible: las secciones [tabla] se convierten en objetos anidados, los bloques [[array de tablas]] en arrays de objetos, y las fechas pasan tal cual como cadenas. El parser cubre el núcleo cotidiano de TOML; sus límites reales (valores multilínea, tablas inline, claves con puntos) se detallan abiertamente más abajo.

Cómo funciona la conversión

  1. 1

    Pega tu TOML

    Escribe o pega el texto en el cuadro de entrada y pulsa Convertir a JSON. Los comentarios # de línea completa se omiten automáticamente.

  2. 2

    Las tablas se vuelven objetos

    Una cabecera `[server.database]` se convierte en objetos JSON anidados, un nivel por cada nombre con punto.

  3. 3

    Los arrays de tablas se vuelven arrays

    Los bloques `[[users]]` generan un array JSON con un objeto por bloque.

  4. 4

    Los valores escalares conservan su tipo

    Las cadenas entrecomilladas, los enteros y decimales en notación simple y true/false se asignan a tipos JSON nativos; las fechas quedan como cadenas, exactamente como se escribieron.

  5. 5

    Copia el JSON

    El resultado sale con formato legible y sangría de 4 espacios, con las claves en su orden original, listo para copiar.

Cómo se asignan los tipos

Valor TOML Valor JSON Ejemplo
Cadena (básica o literal) Cadena "hello" → "hello"
Entero (decimal simple) Número 42 → 42
Decimal (notación simple) Número 3.14 → 3.14
Booleano Booleano true → true
Array (en una línea) Array [1, 2, 3] → [1, 2, 3]
Tabla con claves Objeto [server] + port = 8080 → "server": {"port": 8080}
Array de tablas Array de objetos [[users]] + name = "alice" → "users": [{"name": "alice"}]
Fecha y hora Cadena, tal cual 2026-04-18T10:00:00Z → "2026-04-18T10:00:00Z"

La salida siempre se imprime con sangría de 4 espacios, así que los arrays y objetos ocupan varias líneas; la tabla anterior muestra los valores en línea para facilitar la lectura. El orden de las claves se conserva exactamente como aparece en tu TOML.

Ejemplo completo

title = "My App"

[server]
host = "localhost"
port = 8080

[[users]]
name = "alice"
admin = true

se convierte en:

{
    "title": "My App",
    "server": {
        "host": "localhost",
        "port": 8080
    },
    "users": [
        {
            "name": "alice",
            "admin": true
        }
    ]
}

TOML admitido y límites reales

Se admite: cabeceras [tabla] incluidos los nombres de sección con puntos, [[arrays de tablas]], pares clave = valor en una línea, cadenas básicas "..." con escapes \n, \t y \", cadenas literales '...', enteros y decimales en notación simple, true/false, arrays de una línea (con anidación), comentarios # de línea completa y fechas que pasan como cadenas.

No se admite, y qué hacer en su lugar:

  • Las cadenas multilínea (""" o ''') y los arrays multilínea detienen el parser con un error. Pon antes el valor en una sola línea.
  • Las tablas inline no se expanden: point = { x = 1, y = 2 } sale como la cadena "{ x = 1, y = 2 }", no como objeto. Reescríbela como su propia sección [point]. Las líneas de dependencias de Cargo.toml, como serde = { version = "1.0" }, son el caso clásico.
  • Las claves con puntos a la izquierda del igual quedan como una clave plana: server.host = "a" produce la clave "server.host", sin anidar. Usa una cabecera [server] en su lugar. Los [nombres.de.seccion] con puntos en cabeceras sí anidan correctamente.
  • Los comentarios en la misma línea no se eliminan: port = 8080 # main se convierte en la cadena "8080 # main". Mantén los comentarios en líneas propias.
  • Los formatos numéricos más allá del decimal simple no se reconocen: 1_000, 0xFF, 5e2, +99, inf y nan salen como cadenas entrecomilladas. Escribe 1000, 255, 500, 99.
  • Los escapes \uXXXX en cadenas básicas no se decodifican. Pega el carácter real en su lugar.

Para un documento TOML 1.0 completo, usa un conversor de línea de comandos como toml2json, o carga el archivo con tomllib de Python y vuelca JSON desde ahí.

Dónde resulta útil

  • Inspección rápida de un fragmento TOML como JSON mientras depuras.
  • Pasar valores de configuración sencillos a linters, scripts o herramientas de inventario que solo aceptan JSON.
  • Generar fixtures JSON para tests a partir de notas TOML más cómodas de escribir a mano.
  • Migrar archivos de configuración pequeños y planos, como son muchos config.toml de Hugo.

Notas sobre la ida y vuelta

  • Los comentarios nunca sobreviven: JSON no tiene sintaxis de comentarios.
  • Las fechas siguen siendo cadenas; el código posterior tiene que volver a convertirlas en objetos de fecha.
  • Números grandes: los enteros se conservan como valores de 64 bits en el texto JSON, pero los consumidores JavaScript pierden precisión por encima de 2^53. Cuidado con timestamps en nanosegundos e IDs numéricos.
  • El orden de las claves se mantiene tal como está escrito en este conversor; otras herramientas JSON pueden reordenarlas al reemitir el documento.

Sentido inverso

JSON → TOML es el viaje difícil, porque JSON tiene estructuras (anidación anónima profunda, null) que TOML no tiene o trata de otra forma. La mayoría de los escenarios de ida y vuelta requieren ajustes manuales en el lado TOML.

Preguntas frecuentes

No. JSON no tiene sintaxis de comentarios, así que los comentarios # de línea completa simplemente se omiten. Una advertencia: un comentario en la misma línea que un valor no se elimina, de modo que port = 8080 # main se convierte en la cadena “8080 # main”. Deja los comentarios en líneas propias antes de convertir.

No. Cubre el núcleo cotidiano: tablas con nombres de sección con puntos, arrays de tablas, pares clave = valor en una línea, cadenas entrecomilladas, números decimales simples, booleanos, arrays de una línea y comentarios de línea completa. No admite cadenas ni arrays multilínea, tablas inline, claves con puntos ni formatos numéricos como 1_000 o 0xFF. Para documentos con la especificación completa usa una herramienta de línea de comandos como toml2json o el tomllib de Python.

Los archivos de configuración habituales se convierten al instante. La conversión se ejecuta en nuestro servidor, así que los documentos enormes quedan limitados por el tamaño de la petición; para TOML de varios megabytes encaja mejor un conversor de línea de comandos.

Sí, este conversor funciona en el servidor: el TOML viaja a nuestro servidor por HTTPS, se convierte allí y vuelve en la misma respuesta. El contenido no se almacena después; solo se guarda un contador de uso anónimo. Evita pegar secretos como contraseñas o claves de API.

Herramientas relacionadas

Herramienta disponible en otros idiomas