Utilia

TOML u JSON pretvarač

Pretvori TOML u JSON i JSON u TOML u pregledaču. Podržava tabele, nizove tabela, datume i 64-bitne cele brojeve. Ništa se ne otprema.

Pretvaranje

Kako se TOML pretvara u JSON

  1. Izaberi smer: TOML → JSON (podrazumevano) ili JSON → TOML.
  2. Nalepi podatke ili klikni Otvori fajl da učitaš .toml ili .json fajl (do 10 MB).
  3. Za TOML → JSON izaberi Uvlačenje (2 ili 4 razmaka) i odluči da li ćeš označiti Velike cele brojeve kao stringove. Za JSON → TOML zadrži ili isključi Izostavi null vrednosti.
  4. Označi Sortiraj ključeve ako želiš da svaka tabela bude poređana abecedno.
  5. Rezultat se ažurira dok kucaš; Pretvori ga ponovo izvršava na zahtev. Greške prikazuju red i kolonu problema.
  6. Kopiraj ili preuzmi rezultat. Zameni smer prebacuje rezultat u unos da ga pretvoriš nazad.

TOML i JSON jedan pored drugog

TOML (Tom’s Obvious Minimal Language) je format konfiguracije iza Cargo.toml u Rust-u, pyproject.toml u Python-u, Hugo i Netlify sajtova i mnogih alata komandne linije. Dizajniran je da ga ljudi čitaju i uređuju, a direktno se preslikava na drvo nalik JSON-u od tabela (objekata), nizova i vrednosti.

[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 sa tačkama kao a.b.c = 1 postaju ugnežđeni objekti.
  • Niz tabela, [[bin]], postaje JSON niz objekata.
  • Ugrađene tabele { x = 1 } i nizovi rade kako očekuješ. Komentari se izostavljaju, jer ih JSON nema.

Gde se ta dva formata razlikuju

Datumi i vremena. TOML ima četiri izvorna tipa datuma i vremena; JSON nema nijedan. Pretvarač ih zapisuje kao ISO 8601 stringove i čuva njihov oblik: datum-vreme sa pomakom ostaje 1979-05-27T07:32:00.000-08:00, lokalni datum ostaje 1979-05-27, a lokalno vreme ostaje 07:32:00.000. Delovi 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.

Celi brojevi. TOML celi brojevi su 64-bitni sa 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 celi brojevi zapisuju se sa svim ciframa, što je ispravan JSON, ali program koji ih čita kao dvostruke preciznosti zaokružiće ih; označi Velike cele brojeve kao stringove da to izbegneš. Ceo broj van 64-bitnog opsega se odbija, kako TOML specifikacija zahteva.

Posebni brojevi u pokretnom zarezu. inf, -inf i nan nemaju JSON oblik, pa se zapisuju kao stringovi "inf", "-inf" i "nan".

JSON → TOML. TOML dokument je uvek tabela, pa JSON na vrhu mora biti objekat. TOML nema null: podrazumevano se null vrednosti izostavljaju, a poruka kaže koliko ih je; isključi Izostavi null vrednosti da umesto toga dobiješ grešku sa lokacijom prve. JSON ne razlikuje 1 od 1.0, pa celi brojevi postaju TOML celi brojevi, a brojevi preveliki za 64 bita postaju brojevi u pokretnom zarezu. U novijim pregledačima veliki celi brojevi u tvom JSON-u čuvaju tačne cifre.

Česta pitanja

Da li se moja konfiguracija negde šalje?

Ne. Pretvaranje radi u potpunosti u tvom pregledaču, pa API ključevi ili tajne u tvojim konfiguracionim fajlovima nikada ne napuštaju tvoj računar.

Zašto se redosled mojih ključeva promenio u TOML rezultatu?

TOML zahteva da obični parovi ključ/vrednost u svakoj tabeli dolaze pre podtabela, pa pretvarač prvo piše vrednosti, zatim [tabele], pa [[nizove tabela]]. Podaci su isti.

Da li se TOML komentari čuvaju?

Ne. JSON nema komentare, pa se gube pri pretvaranju TOML → JSON, a nema ih ni šta da se vrati na putu nazad.

Koja verzija TOML-a je podržana?

TOML 1.0, uključujući ključeve sa tačkama, ugrađene tabele, nizove tabela, heksadecimalne, oktalne i binarne cele brojeve i sva četiri tipa datuma i vremena.

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

JSON nema tip datuma. ISO 8601 stringovi su uobičajena konvencija, a većina jezika može da ih direktno parsira.