Utilia

Pretvarač TOML u JSON

Pretvori TOML u JSON i JSON u TOML u pregledniku. Podržava tablice, polja tablica, datume i 64-bitne cijele brojeve. Ništa se ne šalje na poslužitelj.

Pretvorba

Kako pretvoriti TOML u JSON

  1. Odaberi smjer: TOML → JSON (zadano) ili JSON → TOML.
  2. Zalijepi podatke ili klikni 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 Velike cijele brojeve kao nizove. Za JSON → TOML zadrži ili odznači Izostavi null vrijednosti.
  4. Označi Sortiraj ključeve ako želiš da je svaka tablica poredana abecedno.
  5. Rezultat se ažurira dok tipkaš; Pretvori ga ponovno izvodi na zahtjev. Pogreške prikazuju redak i stupac problema.
  6. Kopiraj ili preuzmi rezultat. Zamijeni smjer premješta izlaz u unos da ga pretvoriš natrag.

TOML i JSON jedan uz drugi

TOML (Tom’s Obvious Minimal Language) je format konfiguracije iza datoteke Cargo.toml u Rustu, pyproject.toml u Pythonu, stranica na Hugu i Netlifyju te mnogih alata naredbenog retka. Namijenjen je da ga ljudi čitaju i uređuju, a izravno se preslikava na stablo nalik JSON-u od tablica (objekata), polja 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 objekt, a ključevi s točkama poput a.b.c = 1 postaju ugniježđeni objekti.
  • Polje tablica, [[bin]], postaje JSON polje objekata.
  • Ugrađene tablice { x = 1 } i polja rade kako očekuješ. Komentari se odbacuju jer ih JSON nema.

Gdje se ta dva formata razlikuju

Datumi i vrijeme. TOML ima četiri izvorna tipa datuma i vremena; JSON nema nijedan. Pretvarač ih zapisuje kao ISO 8601 nizove i čuva njihovu vrstu: 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. Pretvaranjem natrag u TOML dobivaju se obični nizovi, 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, točni su samo do 2^53 (9 007 199 254 740 991). Veći TOML cijeli brojevi zapisuju se sa svim znamenkama, što je ispravan JSON, ali program koji ih čita kao brojeve s pomičnim zarezom zaokružit će ih; označi Velike cijele brojeve kao nizove da to izbjegneš. Cijeli broj izvan 64-bitnog raspona odbija se, kako zahtijeva TOML specifikacija.

Posebni brojevi s pomičnim zarezom. inf, -inf i nan nemaju JSON oblik, pa se zapisuju kao nizovi "inf", "-inf" i "nan".

JSON → TOML. TOML dokument uvijek je tablica, pa JSON na najvišoj razini mora biti objekt. TOML nema null: prema zadanim postavkama null vrijednosti se izostavljaju, a poruka kaže koliko ih je; odznači Izostavi null vrijednosti da umjesto toga dobiješ pogrešku s mjestom prve. JSON ne razlikuje 1 od 1.0, pa cijeli brojevi postaju TOML cijeli brojevi, a brojevi preveliki za 64 bita postaju brojevi s pomičnim zarezom. U novijim preglednicima veliki cijeli brojevi u tvom JSON-u zadržavaju točne znamenke.

Česta pitanja

Šalje li se moja konfiguracija negdje?

Ne. Pretvorba se u cijelosti izvodi u tvom pregledniku, pa API ključevi ili tajne u tvojim konfiguracijskim datotekama nikada ne napuštaju tvoje računalo.

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

TOML zahtijeva da obični parovi ključ/vrijednost dolaze prije podtablica u svakoj tablici, pa pretvarač prvo piše vrijednosti, zatim [tablice], pa [[polja tablica]]. Podaci su isti.

Čuvaju li se TOML komentari?

Ne. JSON nema komentare, pa se gube pri pretvorbi TOML → JSON, a na povratku nema ničega za vraćanje.

Koja je verzija TOML-a podržana?

TOML 1.0, uključujući ključeve s točkama, ugrađene tablice, polja tablica, heksadecimalne, oktalne i binarne cijele brojeve te sva četiri tipa datuma i vremena.

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

JSON nema tip datuma. ISO 8601 nizovi uobičajena su konvencija, a većina jezika može ih izravno parsirati.