100 % local: tus datos nunca salen de tu navegador

TOML a JSON — los IDs largos, intactos

Convierte TOML a JSON. Los enteros grandes conservan cada cifra y las fechas su desfase: la configuración llega a tu código tal como se escribió.

Instantáneo Privado Cero cookies
Indentación
Invertir: JSON → TOML

Entrada TOML

Salida JSON

Qué hace esta herramienta

Un documento TOML se vuelve JSON. Las tablas anidan, y los [[arreglos de tablas]] se vuelven arreglos.

title = "Demo"

[server]
host = "localhost"
port = 8080
{
  "title": "Demo",
  "server": {
    "host": "localhost",
    "port": 8080
  }
}

Las claves con puntos anidan igual: a.b.c = 1 te da {"a": {"b": {"c": 1}}}.

Los enteros grandes, intactos

snowflake = 1096285471735640155
{
  "snowflake": 1096285471735640155
}

TOML pide enteros con signo de 64 bits, y un número de JavaScript solo guarda 53 exactos. El analizador respondía al documento entero con «integer value cannot be represented losslessly»: un archivo TOML legal, rechazado por un identificador. Ahora las cifras viajan como cifras, porque el JSON lo escribe un serializador sin pérdida, el mismo que en todo este sitio mantiene intactos los números grandes. Era un defecto real, encontrado al escribir esta página y corregido.

inf y nan se nombran, no se anulan

rate = inf
JSON has no infinity: "rate" is inf

TOML tiene inf, -inf y nan; JSON no tiene ninguno de los tres, y JSON.stringify los escribe como null. Una tasa infinita se volvía una tasa ausente, y nada en el resultado lo decía. La herramienta ahora se detiene en el valor y nombra la clave que lo lleva, igual que ya rechaza un null en el camino de vuelta a TOML. Qué poner en su lugar —una cadena, un número muy grande, ninguna clave— es una decisión sobre tus datos, no una lectura.

Lo que JSON no tiene

  • Un tipo fecha. 1979-05-27T00:32:00-07:00 se vuelve la cadena "1979-05-27T00:32:00.000-07:00". El desfase se guarda; los milisegundos se escriben aunque la fuente no los tuviera.
  • Dos clases de número. TOML distingue el entero del flotante, JSON tiene un solo número: 1.0 llega como 1. Vuelve a convertir y tendrás un entero donde escribiste un flotante.
  • Comentarios. Documentan el archivo, no los datos, y no hay dónde ponerlos.

Un archivo que empieza con una marca de orden de bytes —el invisible U+FEFF que los editores de Windows añaden con gusto— se rechazaba con un mensaje sobre los caracteres permitidos en una clave, señalando un carácter que no se ve. Ahora se quita antes de leer.

Privado por diseño

Todo se ejecuta localmente en tu navegador con JavaScript. Tus datos nunca se suben a un servidor, lo que hace que la herramienta sea segura para contenido sensible y funcione sin conexión.

Preguntas frecuentes

¿Pasan los enteros de 64 bits?
Sí, desde que se escribió esta página. TOML exige enteros con signo de 64 bits, y el analizador rechazaba el documento entero en cuanto uno pasaba de lo que un número de JavaScript guarda exacto: «integer value cannot be represented losslessly». Un identificador de Discord o una marca de tiempo en nanosegundos bastaba para rechazar un archivo del todo legal. Ahora las cifras pasan una a una, porque el JSON lo escribe un serializador sin pérdida y no el de JavaScript.
¿Qué pasa con `inf` y `nan`?
La conversión se detiene y nombra la clave. TOML tiene tres flotantes especiales, JSON no tiene ninguno, y `JSON.stringify` los escribe como `null`: una tasa infinita se volvía en silencio una tasa ausente. Nombrar la clave deja la decisión donde debe estar: una cadena, un número muy grande, ninguna clave — eso lo eliges tú.
¿Y las fechas?
Salen como cadenas ISO 8601, con el desfase incluido, porque JSON no tiene tipo fecha. Un detalle que conviene saber: los milisegundos se escriben aunque tú no los escribieras, así que `07:32:00` llega como `07:32:00.000`. El instante es el mismo; el texto no.

Convertidores relacionados