Utilia

TOML-i ja JSON-i muundur

Teisenda TOML JSON-iks ja JSON TOML-iks brauseris. Toetab tabeleid, tabelimassiive, kuupäevi ja 64-bitiseid täisarve. Midagi ei laadita üles.

Teisendus

Kuidas TOML-i JSON-iks teisendada

  1. Vali suund: TOML → JSON (vaikimisi) või JSON → TOML.
  2. Kleebi oma andmed või klõpsa Ava fail, et laadida .toml või .json fail (kuni 10 MB).
  3. Suunas TOML → JSON vali Taane (2 või 4 tühikut) ja otsusta, kas märkida Suured täisarvud stringidena. Suunas JSON → TOML jäta Jäta null-väärtused välja märgituks või võta märge maha.
  4. Märgi Sordi võtmed, kui tahad iga tabeli tähestikulisse järjekorda.
  5. Tulemus uueneb sisestamise ajal; Teisenda käivitab selle soovi korral uuesti. Vead näitavad probleemi rida ja veergu.
  6. Kopeeri või laadi tulemus alla. Vaheta suund viib väljundi sisendisse, et see tagasi teisendada.

TOML ja JSON kõrvuti

TOML (Tom’s Obvious Minimal Language) on seadistusvorming, mida kasutavad Rusti Cargo.toml, Pythoni pyproject.toml, Hugo ja Netlify saidid ning paljud käsurea tööriistad. See on mõeldud inimestele lugemiseks ja muutmiseks ning kujutub otse JSON-i taolisele puule, mis koosneb tabelitest (objektidest), massiividest ja väärtustest.

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

[[bin]]
name = "cli"

muutub kujule

{"package": {"name": "demo", "version": "0.1.0"}, "bin": [{"name": "cli"}]}
  • Päis [table] muutub JSON-i objektiks ja punktiga võtmed, nagu a.b.c = 1, muutuvad pesastatud objektideks.
  • Tabelite massiiv [[bin]] muutub objektide JSON-massiiviks.
  • Reasisesed tabelid { x = 1 } ja massiivid töötavad ootuspäraselt. Kommentaarid jäetakse välja, sest JSON-is neid pole.

Kus need kaks vormingut erinevad

Kuupäevad ja kellaajad. TOML-il on neli natiivset kuupäeva-kellaaja tüüpi; JSON-il pole ühtegi. Muundur kirjutab need ISO 8601 stringidena ja säilitab nende liigi: nihkega kuupäev-kellaaeg jääb kujule 1979-05-27T07:32:00.000-08:00, kohalik kuupäev kujule 1979-05-27 ja kohalik kellaaeg kujule 07:32:00.000. Sekundi murdosad säilivad millisekundi täpsusega. TOML-i tagasi teisendades saad tavalised stringid, sest JSON-is ei märgi miski neid kuupäevadeks.

Täisarvud. TOML-i täisarvud on märgiga 64-bitised, vahemikus −9 223 372 036 854 775 808 kuni 9 223 372 036 854 775 807. JavaScripti arvud, mida enamik JSON-i parsereid kasutab, on täpsed ainult kuni 2^53 (9 007 199 254 740 991). Suuremad TOML-i täisarvud kirjutatakse kõigi numbritega, mis on korrektne JSON, kuid programm, mis loeb neid ujukomaarvudena, ümardab need; märgi Suured täisarvud stringidena, et seda vältida. Täisarv väljaspool 64-bitist vahemikku lükatakse tagasi, nagu TOML-i spetsifikatsioon nõuab.

Erilised ujukomaarvud. inf, -inf ja nan ei ole JSON-is esitatavad, seega kirjutatakse need stringidena "inf", "-inf" ja "nan".

JSON → TOML. TOML-dokument on alati tabel, seega peab JSON olema ülemisel tasemel objekt. TOML-is pole null-i: vaikimisi jäetakse null-väärtused välja ja teade ütleb, mitu neid oli; võta märge maha valikult Jäta null-väärtused välja, et saada selle asemel viga esimese asukohaga. JSON ei erista 1 ja 1.0, seega muutuvad täisarvud TOML-i täisarvudeks ning 64 bitti ületavad arvud ujukomaarvudeks. Uutes brauserites säilitavad sinu JSON-i suured täisarvud oma täpsed numbrid.

Korduma kippuvad küsimused

Kas minu seadistus saadetakse kuhugi?

Ei. Teisendus toimub täielikult sinu brauseris, nii et API võtmed või saladused sinu seadistusfailides ei lahku sinu arvutist.

Miks muutus minu võtmete järjekord TOML-i väljundis?

TOML nõuab, et lihtsad võtme-väärtuse paarid tuleksid igas tabelis enne alamtabeleid, seega kirjutab muundur kõigepealt väärtused, seejärel [tabelid], siis [[tabelite massiivid]]. Andmed on samad.

Kas TOML-i kommentaarid säilivad?

Ei. JSON-is pole kommentaare, seega need lähevad teisendamisel TOML → JSON kaduma ja tagasiteel pole midagi taastada.

Millist TOML-i versiooni toetatakse?

TOML 1.0, sealhulgas punktiga võtmed, reasisesed tabelid, tabelite massiivid, kuueteistkümnend-, kaheksand- ja kahendsüsteemi täisarvud ning kõik neli kuupäeva-kellaaja tüüpi.

Miks on minu kuupäev JSON-is string?

JSON-il pole kuupäevatüüpi. ISO 8601 stringid on tavaline kokkulepe ja enamik keeli oskab neid otse parsida.