100 % locale — i tuoi dati non lasciano mai il tuo browser

TOML in JSON — gli ID lunghi restano esatti

Converti TOML in JSON. Gli interi grandi tengono ogni cifra e le date il loro fuso: la configurazione arriva al tuo codice come è stata scritta.

Istantaneo Privato Zero cookie
Indentazione

Input TOML

Output JSON

Che cosa fa questo strumento

Un documento TOML diventa JSON. Le tabelle si annidano, e gli [[array di tabelle]] diventano array.

title = "Demo"

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

Le chiavi puntate si annidano allo stesso modo: a.b.c = 1 ti dà {"a": {"b": {"c": 1}}}.

Gli interi grandi, intatti

snowflake = 1096285471735640155
{
  "snowflake": 1096285471735640155
}

TOML chiede interi con segno a 64 bit, e un numero JavaScript ne tiene esatti solo 53. L’analizzatore rispondeva all’intero documento con “integer value cannot be represented losslessly”: un file TOML legale, rifiutato per un identificatore. Ora le cifre viaggiano come cifre, perché il JSON lo scrive un serializzatore senza perdita, lo stesso che in tutto questo sito tiene intatti i numeri grandi. Era un difetto vero, trovato scrivendo questa pagina e corretto.

inf e nan vengono nominati, non annullati

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

TOML ha inf, -inf e nan; JSON non ne ha nessuno dei tre, e JSON.stringify li scrive come null. Una portata infinita diventava una portata assente, e niente nel risultato lo diceva. Ora lo strumento si ferma sul valore e nomina la chiave che lo porta, come già rifiuta un null sulla via del ritorno verso TOML. Che cosa metterci invece — una stringa, un numero molto grande, nessuna chiave — è una decisione sui tuoi dati, non una lettura.

Che cosa JSON non ha

  • Un tipo data. 1979-05-27T00:32:00-07:00 diventa la stringa "1979-05-27T00:32:00.000-07:00". Il fuso resta; i millisecondi vengono scritti anche quando la sorgente non ne aveva.
  • Due specie di numero. TOML distingue l’intero dal numero in virgola mobile, JSON ha un solo numero: 1.0 arriva come 1. Riconverti e avrai un intero dove avevi scritto una virgola mobile.
  • I commenti. Documentano il file, non i dati, e non c’è posto dove metterli.

Un file che comincia con un indicatore dell’ordine dei byte — l’invisibile U+FEFF che gli editor Windows aggiungono volentieri — veniva rifiutato con un messaggio sui caratteri ammessi in una chiave, che indicava un carattere che non si vede. Ora viene tolto prima della lettura.

Privato per progettazione

Tutto viene eseguito localmente nel browser con JavaScript. I tuoi dati non vengono mai caricati, quindi lo strumento è sicuro per contenuti sensibili e funziona anche offline.

Domande frequenti

Gli interi a 64 bit passano?
Sì, da quando è stata scritta questa pagina. TOML richiede interi con segno a 64 bit, e l’analizzatore rifiutava l’intero documento appena uno superava ciò che un numero JavaScript tiene esatto: “integer value cannot be represented losslessly”. Un id di Discord o un istante Unix in nanosecondi bastava a far respingere un file del tutto legale. Ora le cifre passano una a una, perché il JSON lo scrive un serializzatore senza perdita e non quello di JavaScript.
Che cosa succede a `inf` e `nan`?
La conversione si ferma e nomina la chiave. TOML ha tre numeri in virgola mobile speciali, JSON non ne ha nessuno, e `JSON.stringify` li scrive come `null`: una portata infinita diventava in silenzio una portata assente. Nominare la chiave lascia la decisione dove deve stare: una stringa, un numero molto grande, nessuna chiave — scegli tu.
E le date?
Escono come stringhe ISO 8601, fuso compreso, perché JSON non ha un tipo data. Un dettaglio che vale la pena sapere: i millisecondi vengono scritti anche quando non li hai scritti, quindi `07:32:00` arriva come `07:32:00.000`. L’istante è lo stesso; il testo no.

Convertitori correlati