TOML (Tom's Obvious Minimal Language) je formát konfiguračních souborů navržený pro lidi. Jednoznačně se mapuje na hashovací tabulku, podporuje vnořené tabulky, typované hodnoty a inline komentáře. Mnoho nástrojů a frameworků používá TOML jako primární formát konfigurace: projekty v Rustu se spoléhají na Cargo.toml, Python packaging využívá pyproject.toml a statické weby Hugo se konfigurují přes config.toml. Převod TOML do JSON online umožňuje transformovat tyto konfigurační soubory do formátu, který dokáže nativně konzumovat prakticky každý programovací jazyk, API a datový pipeline.
JSON (JavaScript Object Notation), definovaný normou RFC 8259, je nejrozšířenější formát pro výměnu dat. Zatímco TOML upřednostňuje čitelnost pro lidi díky minimální syntaxi a podpoře komentářů, JSON upřednostňuje vzájemnou interoperabilitu strojů. Převodník TOML na JSON překlenuje tuto mezeru tak, že parsuje vstup TOML podle specifikace TOML v1.0.0 a produkuje strukturálně ekvivalentní JSON dokument. Převod zachovává veškerá data: řetězce, celá čísla, čísla s plovoucí desetinnou čárkou, booleany, pole a tabulky se přímo mapují na jejich protějšky v JSON.
TOML má čtyři nativní typy datum/čas, které JSON nedokáže přímo reprezentovat: datum a čas s časovým pásmem, lokální datum a čas, lokální datum a lokální čas. JSON nemá typ pro datum, proto se tyto hodnoty při převodu serializují jako řetězce ISO 8601.
Proč používat převodník TOML na JSON?
Konfigurační soubory napsané v TOML často potřebují vstupovat do systémů, které přijímají pouze JSON. Místo ručního přepisování souboru nebo lokální instalace knihovny pro parsování zvládne převod za několik sekund nástroj přímo v prohlížeči.
🔒
Zpracování s důrazem na soukromí
Vaše TOML data jsou parsována a převedena výhradně v prohlížeči. Nic se neodesílá na server, takže je bezpečné převádět konfigurační soubory obsahující API klíče, přihlašovací údaje k databázím nebo interní názvy hostitelů.
⚡
Okamžitý převod
Vložte TOML a okamžitě získáte formátovaný JSON výstup. Není třeba instalovat balíčky Node.js, knihovny Pythonu ani nástroje CLI jen kvůli jednorázovému převodu formátu.
🔀
Plná podpora TOML v1.0.0
Převodník zvládá všechny datové typy TOML včetně tečkovaných klíčů, inline tabulek, polí tabulek, víceřádkových řetězců a hodnot datum/čas. Hraniční případy, které způsobují problémy při ručním převodu, jsou zpracovány správně.
📋
Bez nutnosti registrace
Otevřete stránku, vložte TOML a zkopírujte výsledný JSON. Žádná registrace, žádný limit požadavků a žádné sledování využití. Nástroj funguje stejně při každé návštěvě.
Případy použití TOML na JSON
Frontendový vývoj
Převeďte metadata Cargo.toml projektu Rust WASM do JSON pro použití v JavaScriptovém build skriptu nebo při generování package.json.
Backendové inženýrství
Transformujte konfiguraci aplikace napsanou v TOML do JSON pro vložení do prostředí vyžadujících JSON konfiguraci, jako jsou proměnné prostředí AWS Lambda nebo popisky kontejnerů Docker.
DevOps a CI/CD
Pipeline nástroje jako GitHub Actions a GitLab CI často pracují s JSON vstupy. Převeďte konfigurace nástrojů v TOML (rustfmt.toml, taplo.toml) do JSON pro kroky lintování nebo validace.
QA a testování
Generujte JSON testovací vzorky ze zdrojových souborů TOML. TOML je snazší udržovat jako zdroj testovacích dat díky podpoře komentářů a přehledné syntaxi, ale testovací frameworky často očekávají JSON vstup.
Datové inženýrství
Při migraci konfigurace mezi systémy mohou TOML soubory z jedné platformy (např. InfluxDB, Telegraf) potřebovat stát se JSON dokumenty pro API nebo importní nástroj jiné platformy.
Vzdělávání a výuka
Studenti, kteří se učí datové formáty, mohou vkládat příklady TOML a sledovat, jak se tabulky stávají vnořenými objekty, jak se pole tabulek stávají JSON poli a jak se datové typy TOML mapují na řetězce.
Referenční tabulka mapování typů TOML na JSON
Každý typ TOML má přímý ekvivalent v JSON s jednou výjimkou: hodnoty datum a čas. Níže uvedená tabulka ukazuje, jak se každý typ TOML převádí do JSON. Toto mapování odpovídá specifikaci TOML v1.0.0 a chování standardních parserů jako tomllib (Python), toml-rs (Rust) a @iarna/toml (Node.js).
Typ
Syntaxe TOML
Výstup JSON
String
"value"
"value"
Integer
42
42
Float
3.14
3.14
Boolean
true / false
true / false
Offset Date-Time
1979-05-27T07:32:00Z
"1979-05-27T07:32:00Z"
Local Date-Time
1979-05-27T07:32:00
"1979-05-27T07:32:00"
Local Date
1979-05-27
"1979-05-27"
Local Time
07:32:00
"07:32:00"
Array
[1, 2, 3]
[1, 2, 3]
Table
[section]
{ "section": {} }
Inline Table
{ key = "val" }
{ "key": "val" }
Array of Tables
[[items]]
"items": [{}]
Celá čísla TOML podporují pro přehlednost podtržítka (např. 1_000_000) a literály v šestnáctkové (0xDEADBEEF), osmičkové (0o755) a binární (0b11010110) soustavě. Všechny se převedou na desetinná čísla v JSON. TOML také podporuje hodnoty infinity a NaN pro čísla s plovoucí desetinnou čárkou, ale ty nemají v JSON reprezentaci a způsobí chybu převodu v přísném režimu.
Příklady kódu
Funkční příklady převodu TOML na JSON ve čtyřech jazycích. Každý přečte soubor TOML, parsuje jej a vypíše formátovaný JSON.
import tomllib # Python 3.11+ (standard library)
import json
with open('config.toml', 'rb') as f:
data = tomllib.load(f)
print(json.dumps(data, indent=2, default=str))
# Dates become strings: "1979-05-27"
# Arrays of tables become JSON arrays of objects
Go
package main
import (
"encoding/json"
"fmt"
"os"
"github.com/BurntSushi/toml"
)
func main() {
var data map[string]any
_, err := toml.DecodeFile("config.toml", &data)
if err != nil {
panic(err)
}
out, _ := json.MarshalIndent(data, "", " ")
fmt.Println(string(out))
}
Komentáře TOML (řádky začínající #) jsou při převodu zahozeny. JSON komentáře nepodporuje, takže je nelze ve výstupu zachovat. Pokud potřebujete komentáře uchovat, zvažte jako cílový formát JSONC (JSON s komentáři).
Může při převodu TOML na JSON dojít ke ztrátě dat?
U standardních TOML dokumentů nedochází ke ztrátě dat. Všechny řetězce, čísla, booleany, pole a tabulky mají přímé ekvivalenty v JSON. Jedinou transformací jsou hodnoty datum a čas, které se v JSON stanou řetězci ISO 8601. Problémy mohou způsobit dva hraniční případy: TOML podporuje hodnoty infinity a NaN pro čísla s plovoucí desetinnou čárkou, které JSON neumí reprezentovat, a velmi velká celá čísla mohou překročit limity přesnosti JSON parserů (2^53 - 1 v JavaScriptu).
Jak jsou pole tabulek TOML reprezentována v JSON?
Syntaxe [[dvojitých závorek]] v TOML definuje pole tabulek. Každý blok [[sekce]] připojí nový objekt do JSON pole. Například dva bloky [[fruits]] se stanou JSON polem se dvěma objekty: "fruits": [{...}, {...}]. Syntaxe s dvojitými závorkami je jednou z obtížněji čitelných částí TOML na první pohled; výstup JSON dělá strukturu zřejmou.
Je převod reverzibilní? Mohu jít z JSON zpět do TOML?
Strukturálně ano. Jakýkoli JSON objekt lze reprezentovat jako TOML tabulku a JSON pole se mapují na TOML pole. Nicméně vlastnosti specifické pro TOML, jako jsou komentáře, seskupování tečkovaných klíčů a formátování inline tabulek, jsou při počátečním převodu TOML na JSON ztraceny a nelze je obnovit. Zpětný převod vyprodukuje platný, ale potenciálně méně čitelný TOML.
Jaký je rozdíl mezi TOML a JSON pro konfigurační soubory?
TOML byl navržen pro konfiguraci: podporuje komentáře, má čitelnější syntaxi pro vnořené struktury, rozlišuje mezi celými čísly a čísly s plovoucí desetinnou čárkou a obsahuje nativní typy datum/čas. JSON byl navržen pro výměnu dat mezi programy. JSON je podporován širším spektrem nástrojů a API, ale TOML je pro lidi snadnější číst a upravovat. Mnoho projektů používá TOML pro zdrojovou konfiguraci a převádí ji do JSON pro nasazení.
Jak tento nástroj zpracovává tečkované klíče jako server.host?
Tečkované klíče v TOML (např. server.host = "localhost") vytvářejí v JSON vnořené objekty: {"server": {"host": "localhost"}}. To je ekvivalentní definici tabulky [server] s klíčem host. Převodník automaticky rozvine tečkované klíče do jejich plné vnořené struktury.
Proč se můj soubor TOML nepodaří převést?
Mezi běžné příčiny patří: chybějící uvozovky kolem řetězcových hodnot (TOML je vyžaduje), použití tabulátorů pro odsazení uvnitř víceřádkových základních řetězců, duplicitní definice klíčů a míchání tečkovaných klíčů s explicitními hlavičkami tabulek pro stejnou cestu. Převodník zobrazí chybovou zprávu parseru s číslem řádku, aby vám pomohl problém lokalizovat.