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:00diventa 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.0arriva come1. 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.