Cookie di statistica e di pubblicità
Usiamo cookie di statistica e di pubblicità, entrambi inviati a Google. Rifiutare non cambia niente di quello che vedi.Leggi la pagina sulla privacy
Qui converti TOML in JSON gratis e senza account: trascina il file qui sopra e in un paio di secondi il risultato è pronto da scaricare. La conversione avviene dentro il tuo browser, quindi il file non viene mai caricato. Funziona allo stesso modo su Windows, macOS e Linux e anche su iPhone e Android, e continua a funzionare anche se stacchi la connessione.
Fino a 100 file alla volta. Formati diversi insieme non sono un problema.
Vengono convertiti uno dopo l’altro e scaricati insieme in uno ZIP.
TOML in JSON
Il TOML è lo standard per il packaging Python e Rust da anni, e gli strumenti attorno a un repository spesso non si sono aggiornati. Un passo CI con jq disponibile e nient’altro, uno script Node che deve leggere la versione da un Cargo.toml, una dashboard che conta le dipendenze su duecento repository — tutti possono leggere JSON e nessuno può leggere TOML senza una nuova dipendenza.
È il caso a cui serve questa conversione, e funziona in modo pulito perché i due modelli di dati si sovrappongono quasi interamente. Il TOML è una tabella di coppie chiave-valore con annidamento e array, cioè un oggetto JSON con annidamento e array. Le parti interessanti sono i quattro punti dove il TOML sa qualcosa che il JSON non sa.
Un’intestazione tra parentesi diventa un oggetto annidato, e un’intestazione puntata diventa annidamento su più livelli — un’intestazione scritta per uno strumento e poi un linter sotto produce un oggetto dentro un oggetto, così il percorso JSON corrisponde esattamente all’intestazione. Niente della struttura richiede interpretazione.
Un’intestazione a doppia parentesi è l’array di tabelle, e diventa un array JSON di oggetti con una voce per occorrenza. È ciò che contiene gli autori di un pacchetto Python, i binari di un crate Rust e i target di una build, ed è il costrutto per cui le persone si preoccupano di più e devono preoccuparsi di meno. L’ordine viene preservato.
Il TOML è l’unico formato in questa famiglia con veri tipi temporali: date-ora con offset, date-ora locali, date locali e ore locali sono nella specifica, e un parser le restituisce come date. Il JSON non ha alcun tipo data, quindi ognuna diventa una stringa.
I valori sopravvivono con una piega. Una data-ora con offset mantiene il proprio offset piuttosto che essere normalizzata a UTC, un comportamento migliore di diverse altre conversioni su questo sito. Un’ora locale acquisisce una componente in millisecondi che non aveva — un’ora scritta come otto del mattino arriva con una parte frazionaria attaccata.
Il TOML 1.0 richiede a un’implementazione di gestire interi con segno a 64 bit. I numeri JSON sono double IEEE ed sono esatti solo fino a circa nove quadrilioni. Un file TOML che contiene un intero oltre quell’intervallo è del tutto legale, e il parser qui si ferma con un errore che dice che l’intero non può essere rappresentato senza perdita.
Rifiutare è la scelta giusta e vale la pena capirla piuttosto che aggirarla alla cieca. Un identificativo arrotondato silenziosamente è un bug che emerge settimane dopo in un join che non corrisponde a nulla. Se il vostro TOML contiene un valore di quella dimensione, mettetelo tra virgolette come stringa nella sorgente.
I float TOML includono inf e nan come valori letterali. Il JSON non ha nessuno dei due, e il serializzatore scrive null per entrambi. È il comportamento JavaScript standard ed è con perdita in un modo che niente segnala — un limite superiore configurato a infinito e un limite superiore non impostato diventano la stessa cosa nel JSON.
La perdita più sottile è la tipizzazione. Il TOML distingue un intero da un float, quindi 1 e 1.0 sono valori diversi con tipi diversi, e uno schema o un’applicazione può contarci. Il JSON ha un solo tipo numero, e 1.0 viene serializzato come 1.
Tabelle e chiavi escono nell’ordine dichiarato dal TOML, il che mantiene un file convertito leggibile e mantiene significativo un diff fra due conversioni. L’uscita è indentata di due spazi e termina con un ritorno a capo.
L’eccezione sono le chiavi numeriche. Una chiave TOML tra virgolette che è un numero — che appare in configurazioni che indicizzano per anno o porta — viene riordinata davanti a ogni altra chiave nel suo oggetto e ordinata in modo crescente, perché è così che JavaScript ordina le chiavi simili a interi.
L’uscita è JSON ordinario, quindi jq lo legge senza flag: estrarre una versione di progetto, elencare nomi di dipendenze o controllare se esiste una sezione strumento sono tutte espressioni di una riga. Di solito è l’intera ragione del viaggio, e trasforma uno script shell che stava per fare grep su un file TOML in uno che lo interroga correttamente.
Apre anche la validazione. JSON Schema è maturo e ampiamente implementato, e il TOML non ha un linguaggio di schema nella sua specifica, quindi convertire e poi validare è un modo genuino per far rispettare regole aziendali su molti repository — ogni pacchetto deve dichiarare una licenza, ogni crate deve fissare la sua edizione.
Il TOML supporta i commenti e li usa pesantemente: la ragione per cui una dipendenza è fissata, il numero di ticket accanto a una soluzione temporanea, il blocco che spiega a quale ambiente si applica un’impostazione. Il JSON non ha sintassi per commenti sotto RFC 8259, quindi niente di tutto ciò arriva.
Questo stabilisce la direzione della relazione. Il TOML è il file che le persone modificano e revisionano, e il JSON viene generato da esso ogni volta che qualcosa deve leggerlo. Depositare il JSON nel repository accanto al TOML crea due versioni della verità che divergeranno; generarlo nel passo di build no.
Se la lettura avviene dentro un’applicazione piuttosto che in un passo di build, usate un parser. Ogni linguaggio principale ne ha uno — Python ha tomllib nella libreria standard da diverse versioni, e Rust, Go e JavaScript hanno tutti opzioni ben mantenute. Leggere il file direttamente mantiene i tipi temporali e la distinzione intero-float che questa conversione appiattisce.
Il convertitore si guadagna il posto al confine: un’ispezione occasionale, un passo CI dove aggiungere una dipendenza è più fastidio di quanto valga, o una pipeline il cui stadio successivo parla solo JSON. Tutto gira nel vostro browser, quindi una configurazione privata con credenziali è sicura da trascinare qui.
| TOML | JSON | |
|---|---|---|
| Nome completo | Tom's Obvious Minimal Language | JavaScript Object Notation |
| Estensione del file | .toml | .json |
| Tipo di media | application/toml | application/json |
| Prima pubblicazione | 2013 | 2001 |
| Specifica | TOML 1.0 | RFC 8259 |
| Licenza | Standard aperto | Standard aperto |
| Situazione attuale | Attuale | Attuale |
| Si apre nel browser | Nessun browser | Tutti i browser |
| Valutato al suo posto | YAML, INI | XML, YAML, NDJSON |
I commenti non sopravvivono. TOML permette di annotare un file e JSON non ha una sintassi per farlo, quindi ogni riga di spiegazione sparisce — e tocca proprio i file che si commentano: la configurazione che qualcun altro dovrà mantenere.
Non si scarta nulla. TOML e JSON salvano il contenuto senza perdita: la conversione cambia la confezione, non la qualità, e si può ripetere senza che i danni si accumulino.
JSON si apre in qualsiasi browser attuale. TOML raggiunge ancora meno browser. Se il file va su una pagina web o in un modulo, di solito è tutto il motivo della conversione.
Visual Studio Code legge sia TOML sia JSON, quindi puoi confrontare il risultato con l'originale senza un secondo programma.
I due puntano a lavori diversi: TOML a la modifica, JSON a spostare dati fra programmi e il web. Vale la pena valutarlo prima, perché il motivo per cui esiste uno è di solito il motivo per cui l'altro risulta scomodo.
TOML è stato pubblicato nel 2013. È descritto in TOML 1.0, e vale la pena conoscerlo se il file deve sopravvivere allo strumento che lo ha scritto.
JSON risale al 2001, descritto in RFC 8259. Visual Studio Code, jq e Postman lo leggono.
No. Questa conversione avviene interamente nel tuo browser, quindi il file non esce dal tuo dispositivo. Puoi controllarlo da solo: apri la scheda di rete degli strumenti per sviluppatori e converti qualcosa. Vedrai la pagina stessa e le richieste di statistica e di pubblicità con cui questo servizio si paga, e nemmeno una che porti il tuo file.
Sì. Senza account, senza filigrana e senza una quota giornaliera da consumare: gira sulla tua macchina, quindi puoi tornare quante volte vuoi. Il browser lavora file fino a 100 MB, 100 per volta.
No. JSON conserva lo stesso contenuto senza buttare via niente: il risultato è identico in qualità all’originale.
Non si scarta nulla. TOML e JSON salvano il contenuto senza perdita: la conversione cambia la confezione, non la qualità, e si può ripetere senza che i danni si accumulino.
I commenti non sopravvivono. TOML permette di annotare un file e JSON non ha una sintassi per farlo, quindi ogni riga di spiegazione sparisce — e tocca proprio i file che si commentano: la configurazione che qualcun altro dovrà mantenere.