Utilia

TOML u JSON pretvarač

Pretvori TOML u JSON i JSON u TOML u pregledniku. Podržava tabele, nizove tabela, datume i 64-bitne cijele brojeve. Ništa se ne šalje na server.

Pretvaranje

Kako pretvoriti TOML u JSON

  1. Odaberi smjer: TOML → JSON (zadano) ili JSON → TOML.
  2. Zalijepi podatke ili klikni na Otvori datoteku da učitaš datoteku .toml ili .json (do 10 MB).
  3. Za TOML → JSON odaberi Uvlačenje (2 ili 4 razmaka) i odluči hoćeš li označiti Veliki cijeli brojevi kao stringovi. Za JSON → TOML zadrži ili poništi Izostavi null vrijednosti.
  4. Označi Sortiraj ključeve ako želiš da svaka tabela bude poredana abecedno.
  5. Rezultat se osvježava dok pišeš; Pretvori ga ponovo pokreće na zahtjev. Greške prikazuju red i kolonu problema.
  6. Kopiraj ili preuzmi rezultat. Zamijeni smjer premješta izlaz u unos da ga pretvoriš nazad.

TOML i JSON jedan pored drugog

TOML (Tom’s Obvious Minimal Language) je konfiguracijski format iza Cargo.toml u Rustu, pyproject.toml u Pythonu, Hugo i Netlify stranica te mnogih alata komandne linije. Pravljen je da ga ljudi čitaju i uređuju, a direktno se preslikava na stablo nalik JSON-u od tabela (objekata), nizova i vrijednosti.

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

[[bin]]
name = "cli"

postaje

{"package": {"name": "demo", "version": "0.1.0"}, "bin": [{"name": "cli"}]}
  • Zaglavlje [table] postaje JSON objekat, a ključevi s tačkama poput a.b.c = 1 postaju ugniježđeni objekti.
  • Niz tabela, [[bin]], postaje JSON niz objekata.
  • Umetnute tabele { x = 1 } i nizovi rade kako bi se očekivalo. Komentari se izostavljaju, jer ih JSON nema.

Gdje se ova dva formata razlikuju

Datumi i vrijeme. TOML ima četiri izvorna tipa datuma i vremena; JSON nema nijedan. Pretvarač ih piše kao ISO 8601 stringove i čuva njihov oblik: datum-vrijeme s pomakom ostaje 1979-05-27T07:32:00.000-08:00, lokalni datum ostaje 1979-05-27, a lokalno vrijeme ostaje 07:32:00.000. Djelići sekunde čuvaju se do milisekunde. Pretvaranje nazad u TOML daje obične stringove, jer ništa u JSON-u ne označava da su datumi.

Cijeli brojevi. TOML cijeli brojevi su 64-bitni s predznakom, od −9 223 372 036 854 775 808 do 9 223 372 036 854 775 807. JavaScript brojevi, koje koristi većina JSON parsera, tačni su samo do 2^53 (9 007 199 254 740 991). Veći TOML cijeli brojevi pišu se sa svim ciframa, što je ispravan JSON, ali program koji ih čita kao double zaokružit će ih; označi Veliki cijeli brojevi kao stringovi da to izbjegneš. Cijeli broj izvan 64-bitnog raspona se odbija, kako TOML specifikacija nalaže.

Posebni realni brojevi. inf, -inf i nan nemaju JSON oblik, pa se pišu kao stringovi "inf", "-inf" i "nan".

JSON → TOML. TOML dokument je uvijek tabela, pa JSON na najvišem nivou mora biti objekat. TOML nema null: po zadanom se null vrijednosti izostavljaju, a poruka kaže koliko ih je; poništi Izostavi null vrijednosti da umjesto toga dobiješ grešku s lokacijom prve. JSON ne razlikuje 1 od 1.0, pa cijeli brojevi postaju TOML cijeli brojevi, a brojevi preveliki za 64 bita postaju realni brojevi. U novijim preglednicima veliki cijeli brojevi u tvom JSON-u zadržavaju tačne cifre.

Sve radi u tvom pregledniku. Ništa što zalijepiš ne šalje se na server.

Česta pitanja

Šalje li se moja konfiguracija negdje?

Ne. Pretvaranje radi potpuno u tvom pregledniku, pa API ključevi ili tajne u konfiguracijskim datotekama nikada ne napuštaju tvoj računar.

Zašto se redoslijed ključeva promijenio u TOML izlazu?

TOML traži da obični parovi ključ/vrijednost u svakoj tabeli dolaze prije podtabela, pa pretvarač prvo piše vrijednosti, zatim [tabele], pa [[nizove tabela]]. Podaci su isti.

Čuvaju li se TOML komentari?

Ne. JSON nema komentare, pa se gube pri pretvaranju TOML → JSON, a na povratku nema šta vratiti.

Koja verzija TOML-a je podržana?

TOML 1.0, uključujući ključeve s tačkama, umetnute tabele, nizove tabela, heksadecimalne, oktalne i binarne cijele brojeve te sva četiri tipa datuma i vremena.

Zašto je moj datum string u JSON-u?

JSON nema tip za datum. ISO 8601 stringovi su uobičajena konvencija, a većina jezika ih može direktno parsirati.