Utilia

Převodník TOML na JSON

Převáděj TOML na JSON a JSON na TOML ve svém prohlížeči. Zvládá tabulky, pole tabulek, data a 64bitová celá čísla. Nic se nenahrává na server.

Převod

Jak převést TOML na JSON

  1. Vyber směr: TOML → JSON (výchozí) nebo JSON → TOML.
  2. Vlož data, nebo klikni na Otevřít soubor a načti soubor .toml či .json (do 10 MB).
  3. Pro TOML → JSON vyber Odsazení (2 nebo 4 mezery) a rozhodni, zda zaškrtnout Velká celá čísla jako řetězce. Pro JSON → TOML ponech nebo zruš Vynechat hodnoty null.
  4. Zaškrtni Seřadit klíče, chceš-li mít každou tabulku seřazenou abecedně.
  5. Výsledek se aktualizuje během psaní; Převést ho spustí znovu na požádání. Chyby ukazují řádek a sloupec problému.
  6. Výsledek zkopíruj nebo stáhni. Prohodit směr přesune výstup do vstupu, a převedeš ho zpět.

TOML a JSON vedle sebe

TOML (Tom’s Obvious Minimal Language) je konfigurační formát používaný v Cargo.toml v Rustu, pyproject.toml v Pythonu, na webech s Hugo a Netlify a v mnoha nástrojích pro příkazový řádek. Je navržen tak, aby ho lidé četli a upravovali, a přímo se mapuje na stromovou strukturu podobnou JSON z tabulek (objektů), polí a hodnot.

[package]
name = "demo"
version = "0.1.0"

[[bin]]
name = "cli"

se změní na

{"package": {"name": "demo", "version": "0.1.0"}, "bin": [{"name": "cli"}]}
  • Záhlaví [table] se změní na objekt JSON a klíče s tečkou, například a.b.c = 1, na vnořené objekty.
  • Pole tabulek [[bin]] se změní na pole objektů JSON.
  • Vložené tabulky { x = 1 } a pole fungují podle očekávání. Komentáře se zahazují, protože JSON žádné nemá.

V čem se oba formáty liší

Data a časy. TOML má čtyři nativní typy data a času, JSON žádný. Převodník je zapisuje jako řetězce ISO 8601 a zachovává jejich druh: datum a čas s posunem zůstane 1979-05-27T07:32:00.000-08:00, místní datum zůstane 1979-05-27 a místní čas zůstane 07:32:00.000. Zlomky sekund se zachovávají na milisekundy. Převod zpět do TOML dává prosté řetězce, protože nic v JSON je neoznačuje jako data.

Celá čísla. Celá čísla v TOML jsou 64bitová se znaménkem, od −9 223 372 036 854 775 808 do 9 223 372 036 854 775 807. Čísla v JavaScriptu, která používá většina parserů JSON, jsou přesná jen do 2^53 (9 007 199 254 740 991). Větší celá čísla TOML se zapíšou se všemi číslicemi, což je platný JSON, ale program, který je čte jako čísla typu double, je zaokrouhlí; tomu zabrání zaškrtnutí Velká celá čísla jako řetězce. Celé číslo mimo 64bitový rozsah se odmítne, jak vyžaduje specifikace TOML.

Speciální desetinná čísla. inf, -inf a nan nemají v JSON podobu, proto se zapisují jako řetězce "inf", "-inf" a "nan".

JSON → TOML. Dokument TOML je vždy tabulka, takže JSON musí být na nejvyšší úrovni objekt. TOML nemá null: ve výchozím stavu se hodnoty null vynechají a zpráva sdělí, kolik jich bylo; zruš Vynechat hodnoty null a místo toho dostaneš chybu s umístěním první z nich. JSON nerozlišuje 1 od 1.0, takže celá čísla se stanou celými čísly TOML a čísla příliš velká pro 64 bitů desetinnými čísly. V současných prohlížečích si velká celá čísla v tvém JSON zachovají přesné číslice.

Časté dotazy

Odesílá se moje konfigurace někam?

Ne. Převod běží celý ve tvém prohlížeči, takže klíče API ani tajné údaje v konfiguračních souborech tvůj počítač neopouštějí.

Proč se ve výstupu TOML změnilo pořadí mých klíčů?

TOML vyžaduje, aby v každé tabulce šly prosté dvojice klíč/hodnota před podtabulkami, proto převodník zapisuje nejdřív hodnoty, pak [tabulky] a pak [[pole tabulek]]. Data jsou stejná.

Zachovají se komentáře TOML?

Ne. JSON komentáře nemá, takže se při převodu TOML → JSON ztratí a při cestě zpět není co obnovovat.

Která verze TOML je podporována?

TOML 1.0, včetně klíčů s tečkou, vložených tabulek, polí tabulek, šestnáctkových, osmičkových a dvojkových celých čísel a všech čtyř typů data a času.

Proč je moje datum v JSON řetězec?

JSON nemá typ data. Řetězce ISO 8601 jsou obvyklou konvencí a většina jazyků je umí zpracovat přímo.