Saltar al contenido

Convertir JSON a TOML — Numio

Convierte un objeto JSON en TOML. Los objetos anidados pasan a secciones [table], los arrays de objetos a [[array of tables]] y las claves con valor null se descartan porque TOML no tiene null.

Convertir una configuración JSON a la sintaxis de pyproject.toml, Cargo.toml, wrangler.toml o la configuración de Hugo.

JSON

Cuándo usarla

  • Convertir una configuración JSON a la sintaxis de pyproject.toml, Cargo.toml, wrangler.toml o la configuración de Hugo.
  • Pasar ajustes que un script genera como JSON a un archivo de configuración basado en TOML.

Cómo usarla

  1. Pega un objeto JSON (la raíz debe ser un objeto, no un array) en el editor izquierdo, o usa el botón de cargar archivo para abrir un archivo UTF-8.
  2. Revisa el TOML de la derecha: primero van las claves escalares y después las secciones [table] y [[array]].
  3. Copia el resultado y compáralo con las claves documentadas de la herramienta de destino antes de sustituir tu configuración.

Objeto JSON

{
  "title": "My App",
  "port": 8080,
  "debug": false,
  "owner": { "name": "Ada", "since": "2024-01-05T10:00:00Z" },
  "servers": [
    { "host": "a.example.com", "weight": 3 },
    { "host": "b.example.com", "weight": 1 }
  ],
  "ports": [80, 443]
}

TOML

title = "My App"
port = 8_080
debug = false
ports = [ 80, 443 ]

[owner]
name = "Ada"
since = "2024-01-05T10:00:00Z"

[[servers]]
host = "a.example.com"
weight = 3

[[servers]]
host = "b.example.com"
weight = 1

Detalles y limitaciones

Los enteros de 1000 o más llevan guiones bajos como separadores (8080 pasa a 8_080). Es TOML válido y se interpreta como el mismo número.

Las cadenas de fecha siguen siendo cadenas entre comillas; JSON no tiene tipo fecha, así que no se generan valores datetime de TOML.

Las claves con valor null se omiten sin aviso, y 1.0 en JSON se escribe como el entero 1.

Se ejecuta en tu navegador con @iarna/toml. Una lista que mezcla objetos con otros valores se rechaza, porque los arrays de tablas de TOML no pueden contenerlos. Las subtablas se sangran con dos espacios; TOML lo ignora.

FAQ

¿Puedo convertir un array JSON en la raíz?

No. Un documento TOML debe ser una tabla, así que la página indica que el JSON es un array y sugiere envolverlo en un objeto, p. ej. {"items": [...]}.

¿Qué pasa con los valores null?

La clave se descarta. {"a": null} produce una salida vacía. Usa una cadena vacía o elimina la clave a propósito si el destino la espera.

¿Por qué los números contienen guiones bajos?

El serializador formatea los enteros grandes con separadores de dígitos _, que la especificación de TOML permite. Cualquier parser TOML lee 8_080 como 8080.

Especificaciones y referencias