JSON in TOML

Convertitore online gratuito da JSON a TOML, trasforma automaticamente oggetti JSON in configurazioni conformi a TOML v1.0, supporta tabelle annidate ([section]), sottotabelle ([a.b]) e array di tabelle ([[items]]), può generare direttamente Cargo.toml/pyproject.toml, tutto elaborato localmente.

Raccomandazioni correlate

Cos'è TOML? Perché convertire JSON in TOML?

TOML sta per Tom's Obvious, Minimal Language (il linguaggio ovvio e minimale di Tom), un formato di file di configurazione pubblicato nel 2013 da Tom Preston-Werner, cofondatore di GitHub. I suoi obiettivi di design sono: sintassi ovvia (obvious), minimale (minimal), facile da leggere per gli esseri umani, chiara e senza ambiguità. TOML 1.0 è diventato la versione stabile nel 2021 (toml-lang/toml), ed è attualmente il formato di configurazione predefinito per l'ecosistema Rust Cargo, Python PEP 621 (pyproject.toml), Hugo, Prettier, Deno, Taplo e molti altri strumenti.

TOML presenta diversi vantaggi chiari rispetto a JSON e YAML negli scenari di configurazione: ① nessuna trappola di indentazione come in YAML — YAML usa l'indentazione per rappresentare la gerarchia, errori di indentazione cambiano completamente il significato della configurazione (ad esempio una lista diventa una stringa), TOML dichiara esplicitamente la gerarchia con [table], eliminando le ambiguità; ② più adatto di JSON per la configurazione — le virgolette e le parentesi graffe di JSON sono molto verbose nelle configurazioni complesse, la sintassi key = value di TOML è più pulita, con supporto nativo per i commenti; ③ sistema di tipi chiaro — TOML distingue sette tipi: integer/float/string/boolean/datetime/array/table, senza l'ambiguità di JSON su "un numero è intero o float", e senza il problema Norway di YAML 1.1 (NO解析 come booleano false).

La struttura fondamentale di TOML è composta da quattro elementi: ① coppie chiave-valore (key = value) per le voci di configurazione di base; ② tabelle (Table) dichiarate con [name] per raggruppamenti nominati, supporta l'annidamento ([a.b.c]); ③ array di tabelle (Array of Tables) dichiarati con [[name]] per elenchi di oggetti omogenei, usati comunemente per configurazioni multi-ambiente, elenchi di plugin, elenchi di dipendenze; ④ array (Array) supporta sia tipi primitivi inline ([1, 2, 3]) che sintassi multi-linea. Questo strumento riconosce intelligentemente la struttura JSON durante la conversione e seleziona automaticamente la sintassi TOML più appropriata.

Le motivazioni comuni per convertire JSON in TOML sono diverse: ① il progetto migra dall'ecosistema Node.js ai nuovi ecosistemi Rust/Python, il formato di configurazione deve essere unificato in TOML; ② il team decide di centralizzare le configurazioni JSON sparse in TOML, sfruttando la gerarchia [section] di TOML per evitare il peso di lettura degli annidamenti profondi JSON; ③ sostituire YAML con TOML per eliminare bug strani causati dall'indentazione; ④ nelle pipeline CI/CD convertire i metadati JSON inviati a monte in TOML per iniettarli negli strumenti a valle. Questo strumento copre le esigenze di conversione per tutti questi scenari.

Il processo di conversione è essenzialmente una mappatura dell'albero sintattico: JSON.parse() analizza il testo in un oggetto JavaScript (AST), poi attraversa ricorsivamente ogni nodo — stringhe, numeri, booleani, null mappati negli scalari TOML corrispondenti; gli array divisi in array inline o array di tabelle in base al tipo di elemento; gli oggetti annidati mappati in tabelle o sottotabelle. Infine il testo viene emesso secondo la specifica TOML. Questa mappatura strutturata garantisce che il risultato della conversione sia sintatticamente valido al 100%, senza errori di formato.

Casi d'uso

  • Preparare Cargo.toml per progetti Rust: convertire configurazioni JSON in stile package.json / tsconfig.json in formato TOML adatto alla toolchain Cargo
  • Generare pyproject.toml per progetti Python: convertire metadati JSON in stile setup.py / setup.cfg nel formato pyproject.toml conforme a PEP 621
  • Configurazione Hugo / Deno / Prettier: migrare dalle configurazioni degli strumenti JSON al formato TOML per godere della struttura a tabelle più chiara di TOML
  • Migrazione della toolchain DevOps: unificare il formato durante la conversione delle configurazioni di pipeline CI/CD da JSON a TOML, riducendo i costi di manutenzione delle configurazioni del team
  • Revisione del formato dei file di configurazione: convertire rapidamente le configurazioni JSON esistenti in TOML per il confronto dei formati, facilitando la scelta del linguaggio di configurazione più adatto al progetto
  • Imparare la sintassi TOML: quando si ha a disposizione una struttura JSON e si vuole vedere intuitivamente come TOML rappresenta tabelle annidate e array di tabelle

Come utilizzare

  1. Incolla il contenuto JSON nell'editor a sinistra, oppure clicca il pulsante di caricamento per selezionare un file .json / .txt, o clicca "Esempio" per caricare un esempio annidato completo
  2. Lo strumento analizza il JSON in tempo reale e genera il codice di configurazione a destra secondo la specifica TOML v1.0, coppie chiave-valore, tabelle annidate e array di tabelle usano automaticamente la sintassi corrispondente
  3. Se il JSON contiene errori di sintassi verrà mostrato un messaggio di errore rosso, puoi cliccare per saltare allo strumento di riparazione JSON che corregge automaticamente errori comuni come virgole finali
  4. Una volta soddisfatto del risultato, clicca il pulsante "Copia" per copiare il contenuto TOML, oppure clicca "Scarica" per salvarlo come file config.toml da usare nel progetto

Funzionalità

  • Output conforme a TOML v1.0 standard: i file di configurazione generati funzionano direttamente con Cargo, Poetry, Hugo, Prettier e qualsiasi strumento compatibile TOML
  • Mappatura automatica di oggetti annidati: JSON con più livelli di annidamento viene convertito automaticamente in tabelle TOML ([a]) e sottotabelle ([a.b.c]), gerarchia chiara e leggibile
  • Riconoscimento intelligente degli array di tabelle: gli array di oggetti (come elenchi di connessioni al database) vengono convertiti automaticamente in array di tabelle TOML ([[items]]), conformi alla specifica ufficiale
  • Escape sicuro delle stringhe: caratteri speciali come doppi apici, barre rovesciate, a capo e tabulazioni vengono sottoposti a escape secondo le regole TOML, evitando errori di parsing
  • Mappatura automatica dei tipi: stringhe/numeri/booleani/null di JSON corrispondono automaticamente a string/integer/float/boolean in TOML, null diventa una stringa vuota
  • Modifica bidirezionale in tempo reale: incolla JSON a sinistra e visualizza immediatamente il TOML a destra, conversione istantanea senza cliccare pulsanti
  • Esempio rapido pronto all'uso: carica con un clic un esempio completo con oggetti annidati + array + array di tabelle per vedere subito l'effetto TOML generato
  • Caricamento e download di file: supporta il caricamento di file .json/.txt per leggerne il contenuto, e il download del risultato come file config.toml
  • Pannelli regolabili e cronologia: i pannelli sinistro e destro su PC possono essere trascinati per regolare la larghezza, salva automaticamente le ultime 200 voci di cronologia
  • Salto alla formattazione JSON: dopo la conversione salta con un clic allo strumento di formattazione JSON per abbellire, validare o comprimere i dati JSON sorgente
  • Elaborazione locale pura nel frontend: tutto il parsing e la conversione avviene in JavaScript nel browser, i dati di configurazione sensibili come chiavi e stringhe di connessione non vengono caricati

Domande frequenti

Come si converte JSON in un file di configurazione TOML?

Incolla il contenuto JSON nella casella di input a sinistra, lo strumento analizzerà automaticamente l'oggetto JSON e lo convertirà nel formato di file di configurazione secondo la specifica TOML v1.0. Le coppie chiave-valore diventano key = value, gli oggetti annidati diventano tabelle TOML ([section]) e sottotabelle ([a.b]), gli array vengono divisi automaticamente in array inline o array di tabelle ([[items]]) in base al contenuto. Clicca il pulsante Esempio per caricare un esempio annidato e vedere l'effetto, il risultato convertito può essere scaricato direttamente come file config.toml da usare nella configurazione del progetto.

Per quali scenari sono adatti TOML, YAML e JSON?

JSON è adatto per lo scambio di dati API e la trasmissione dati frontend-backend, è lo standard de facto per le interfacce REST; YAML è adatto per strutture dati complesse e configurazioni CI/CD (GitHub Actions, Ansible, Kubernetes), alta leggibilità con supporto per commenti e documenti multipli; TOML è adatto per scenari di configurazione chiari (Rust/Cargo, Python pyproject, Hugo, Prettier), sintassi concisa, poche ambiguità, nessuna trappola di indentazione. Non c'è un vincitore assoluto tra i tre, la chiave è abbinare lo scenario: per i file di configurazione si consiglia TOML, per le configurazioni CI/CD si consiglia YAML, per i dati delle API si usa JSON.

Come vengono rappresentati gli oggetti JSON annidati in TOML?

TOML usa le tabelle (Table) per rappresentare le strutture annidate. Un livello di annidamento come {"database": {"host": "localhost"}} diventa [database] host = "localhost"; più livelli come {"server": {"ssl": {"enabled": true}}} diventa [server.ssl] enabled = true. Questo strumento riconosce automaticamente il livello di annidamento e genera il percorso dell'intestazione della tabella corrispondente, senza bisogno di regolazioni manuali.

Come vengono convertiti gli array JSON in TOML?

TOML distingue due sintassi per gli array: ① array di tipi primitivi (come ["a", "b", 1, 2]) diventano array inline key = ["a", "b", 1, 2], racchiusi tra parentesi quadre e separati da virgole; ② array di oggetti (come [{"name": "primary"}, {"name": "replica"}]) diventano array di tabelle [[items]], ogni oggetto è preceduto dall'intestazione [[items]] con i campi disposti sotto. Questo strumento determina automaticamente il tipo di array e sceglie la sintassi TOML più appropriata.

Il TOML generato può essere usato direttamente come Cargo.toml?

Sì. Lo strumento segue rigorosamente le specifiche ufficiali TOML v1.0 (github.com/toml-lang/toml), il TOML in output può essere usato direttamente con Cargo (gestore pacchetti Rust), Poetry/pyproject (gestore pacchetti Python), Hugo (siti statici), Prettier, Deno, Taplo e qualsiasi altro strumento che supporti il formato TOML. Nota: se hai bisogno delle sezioni specifiche [package] / [dependencies] di Cargo.toml, aggiungi i campi richiesti secondo le specifiche Cargo (name, version, edition, tabelle delle dipendenze crate, ecc.).

In cosa vengono convertiti i valori null di JSON?

TOML non ha un tipo null, quindi il null di JSON viene convertito in una stringa vuota "" (l'equivalente più comune). Se il tuo consumatore TOML ha requisiti speciali per i campi null (ad esempio il campo optional di un crate in [dependencies]), regola manualmente la riga corrispondente dopo la conversione.

Come vengono gestiti i doppi apici e gli a capo nelle stringhe?

Le stringhe TOML devono essere racchiuse tra doppi apici, i doppi apici interni, le barre rovesciate, i caratteri di nuova riga (\n), i ritorni a capo (\r) e i tabulazioni (\t) devono essere sottoposti a escape secondo le regole TOML. Questo strumento gestisce automaticamente questi escape, ad esempio He said "Hello" in JSON diventa He said \"Hello\" in TOML, gli a capo nelle stringhe multilinea diventano \n. Nessun escape manuale necessario, l'output può essere letto correttamente dai parser TOML.

Il TOML generato supporta i tipi data e ora?

Questo strumento accetta solo testo JSON in input, e lo standard JSON non ha un tipo nativo per data e ora (la pratica comune è usare stringhe ISO 8601, come "2026-01-01T00:00:00Z"). Il TOML convertito mantiene questi valori come stringhe (key = "2026-01-01T00:00:00Z"). Se hai bisogno dei tipi nativi TOML local datetime/offset datetime, modifica manualmente la stringa in un literal di data TOML nudo (come 2026-01-01T00:00:00).

I dati di configurazione vengono caricati durante la conversione nel browser locale?

No. Tutto il parsing JSON, la generazione TOML e l'escape delle stringhe vengono eseguiti localmente nel motore JavaScript del tuo browser, nessun dato viene inviato a server tramite la rete, funziona anche offline. JSON contenenti informazioni di configurazione sensibili come password di database, chiavi API e indirizzi interni possono essere convertiti in sicurezza.

Risoluzione dei problemi

JSON segnala "Unexpected token", come risolvere?

Questo è un errore di sintassi JSON. Cause comuni: ① virgola finale (trailing comma) in eccesso, come {"a":1,}; ② uso di apici singoli per le stringhe, come {'a':1} (JSON richiede doppi apici); ③ nomi delle chiavi senza doppi apici, come {a:1}; ④ commenti // o /* */ (lo standard JSON non li supporta). Puoi usare lo strumento di riparazione JSON del sito per correggere automaticamente questi errori comuni con un clic, poi incollare nuovamente in questo strumento per la conversione.

Il TOML convertito segnala "invalid TOML" in Cargo?

Di solito è un conflitto di nomi dei campi o un campo obbligatorio mancante. I parser TOML sono molto rigidi sui percorsi delle intestazioni, chiavi duplicate e escape dei caratteri. Controlla: ① se ci sono chiavi duplicate nello stesso ambito; ② se i caratteri speciali nelle stringhe sono correttamente sottoposti a escape (doppi apici, barre rovesciate, a capo); ③ se il livello di annidamento è troppo profondo (TOML 1.0 consiglia non più di 5 livelli); ④ se mancano sezioni obbligatorie Cargo come [package]. L'output di questo strumento è sintatticamente valido al 100%, il problema di solito sta nel consumatore (ad esempio se i nomi dei campi sono conformi alle specifiche Cargo).

L'array di oggetti è stato convertito in array inline invece di array di tabelle?

Un array JSON viene convertito in array inline ["a","b"] solo quando tutti gli elementi sono di tipi primitivi (stringa/numero/booleano/null), gli array di oggetti (come [{"name":"x"}]) vengono convertiti in array di tabelle [[items]]. Se il tuo array di oggetti è stato erroneamente riconosciuto come array inline, significa che l'array contiene elementi non oggetto mescolati. Controlla i dati: ① se nell'array sono mescolate stringhe o numeri; ② se il livello di annidamento è stato alterato.

Alcuni nomi di chiavi sono stati convertiti con le virgolette, come rimuoverle?

TOML specifica che i nomi delle chiavi possono contenere solo lettere, numeri, trattini bassi e trattini ([A-Za-z0-9_-]). Se i nomi delle chiavi JSON contengono caratteri speciali (come spazi, punti, caratteri cinesi, emoji, parole riservate), lo strumento li racchiuderà automaticamente tra doppi apici per garantire la validità TOML, ad esempio {"my key": 1} diventa "my key" = 1. Se il tuo strumento a valle non accetta nomi di chiavi con virgolette, modifica manualmente i nomi delle chiavi JSON in caratteri validi (A-Z a-z 0-9 _ -) prima della conversione.

Il browser è lento durante la conversione di file di grandi dimensioni, cosa fare?

Lo strumento è ottimizzato per la conversione in tempo reale (conversione immediata durante l'input), ma file molto grandi (>1MB, centinaia di migliaia di righe) possono comunque causare problemi. Suggerimenti: ① usa prima lo strumento di formattazione JSON per verificare che il JSON sia valido; ② converti in batch (ad esempio dividi per chiavi di primo livello); ③ assicurati che il browser abbia memoria sufficiente; ④ per file di configurazione molto grandi (10MB+) si consiglia di usare strumenti a riga di comando come taplo, tomlq, questo strumento è pensato per scenari di configurazione quotidiana (da KB a poche centinaia di KB).

Glossario

TOML
Tom's Obvious, Minimal Language, un linguaggio di formato progettato per i file di configurazione, con sintassi concisa e senza ambiguità, è il formato di configurazione predefinito per Rust Cargo / Python pyproject / Hugo.
Table (Tabella)
Raggruppamento nominato in TOML dichiarato con [name], equivalente a un oggetto in JSON, supporta l'annidamento con punti come [server.ssl].
Array of Tables (Array di tabelle)
Elenco di oggetti omogenei in TOML dichiarato con [[name]], ogni sezione [[name]] contiene tutti i campi di un oggetto, equivalente all'array di oggetti in JSON.
Inline Table (Tabella inline)
Sintassi supportata da TOML 1.0, usa { key = value, key = value } per dichiarare oggetti semplici in una sola riga, adatta per oggetti piatti che non necessitano di denominazione.
Cargo.toml
File di configurazione standard per progetti Rust, definisce i metadati del package, dependencies, dev-dependencies, features, ecc., in formato TOML.
pyproject.toml
File di configurazione standard per progetti Python (PEP 621), definisce build-system, metadati del progetto, dependencies, configurazioni degli strumenti (black/pytest/mypy, ecc.).
TOML v1.0
TOML 1.0 è la versione stabile rilasciata ufficialmente nel 2021, questo strumento segue rigorosamente queste specifiche (github.com/toml-lang/toml/blob/main/toml.md).
Oggetto annidato JSON
Oggetto in JSON che contiene altri oggetti, corrisponde in TOML a una Table ([section]) o sottotabella ([a.b.c]).
Escape TOML
In TOML i caratteri speciali come doppi apici, barre rovesciate e a capo all'interno delle stringhe devono essere preceduti da barra rovesciata (\", \\, \n), questo strumento li gestisce automaticamente.
File di configurazione (Config File)
File delle impostazioni letto all'avvio dell'applicazione, separato dal codice per facilitare le modifiche. TOML è uno degli standard de facto per i file di configurazione.

Tabella di mappatura tipi JSON a tipi TOML

Questo strumento converte i tipi JSON in tipi TOML secondo le seguenti regole:

Tipo JSONTipo TOMLSintassi TOMLNote
stringstringkey = "value"Le stringhe TOML devono essere racchiuse tra doppi apici
integerintegerkey = 8080Gli interi non hanno il punto decimale
floatfloatkey = 3.14I float devono avere il punto decimale
booleanbooleankey = trueTOML usa solo true / false minuscoli
nullstring (vuota)key = ""TOML non ha il tipo null, convertito in stringa vuota
array[primitive]arraykey = ["a", "b"]Gli array di tipi primitivi usano parentesi quadre inline
array[object]array of tables[[items]]\nkey = valueGli array di oggetti usano [[name]] array di tabelle
objecttable[name]\nkey = valueGli oggetti usano la dichiarazione di tabella [name]

Tabella di escape delle stringhe TOML

Caratteri speciali che devono essere sottoposti a escape nelle stringhe TOML:

Carattere originaleEscape TOMLNomeEsempio di utilizzo
"\"Doppio apiceDoppio apice annidato nella stringa
\\\Barra rovesciataPercorso Windows C:\Users
A capo\nNewlineCompressione di stringhe multilinea
Tabulazione\tTabCampi con tabulazione
Ritorno a capo\rCarriage ReturnA capo Windows CRLF
\b\bBackspaceCarattere di backspace
\f\fForm FeedCarattere di form feed
U+0000\u0000Unicode 0I caratteri di controllo devono usare l'escape \u

Esempi di conversione JSON in TOML

Output TOML corrispondente a input JSON con strutture complesse:

StrutturaEsempio
Input JSON{ "name": "app", "port": 8080 }
Output TOMLname = "app" port = 8080
Input JSON{ "server": { "host": "0.0.0.0", "port": 443 } }
Output TOML[server] host = "0.0.0.0" port = 443
Input JSON{ "hosts": [{"ip":"10.0.0.1"},{"ip":"10.0.0.2"}] }
Output TOML[[hosts]] ip = "10.0.0.1" [[hosts]] ip = "10.0.0.2"

Privacy & Security

Tutto il parsing JSON, la generazione TOML, l'escape delle stringhe e la lettura dei file di questo strumento vengono eseguiti localmente in JavaScript nel browser, il contenuto del tuo JSON e le configurazioni TOML generate non vengono inviati a nessun server tramite la rete, né vengono registrati o analizzati. JSON contenenti informazioni di configurazione sensibili come password di database, chiavi API e indirizzi interni possono essere convertiti in sicurezza. La cronologia locale viene salvata solo nel localStorage del tuo browser, cancellandola alla chiusura del browser o allo svuotamento della cache.

Authoritative References