Utilia

TOML naar JSON omzetten

Zet TOML om naar JSON en JSON naar TOML in je browser, met tabellen, arrays van tabellen, datums en 64-bits gehele getallen. Er wordt niets geüpload.

Omzetting

Zo zet je TOML om naar JSON

  1. Kies de richting: TOML → JSON (standaard) of JSON → TOML.
  2. Plak je gegevens, of klik op Bestand openen om een .toml- of .json-bestand te laden (tot 10 MB).
  3. Kies bij TOML → JSON de Inspringing (2 of 4 spaties) en bepaal of je Grote gehele getallen als strings aanvinkt. Bij JSON → TOML laat je Null-waarden weglaten aangevinkt of vink je het uit.
  4. Vink Sleutels sorteren aan als je elke tabel alfabetisch geordend wilt hebben.
  5. Het resultaat wordt bijgewerkt terwijl je typt; Omzetten voert de omzetting opnieuw uit wanneer je wilt. Fouten tonen de regel en kolom van het probleem.
  6. Kopieer of download het resultaat. Richting omdraaien zet het resultaat in de invoer, zodat je het terug kunt omzetten.

TOML en JSON naast elkaar

TOML (Tom’s Obvious Minimal Language) is het configuratieformaat achter Cargo.toml in Rust, pyproject.toml in Python, Hugo- en Netlify-sites en veel commandoregeltools. Het is bedoeld om door mensen gelezen en bewerkt te worden, en het past direct op een JSON-achtige boom van tabellen (objecten), arrays en waarden.

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

[[bin]]
name = "cli"

wordt

{"package": {"name": "demo", "version": "0.1.0"}, "bin": [{"name": "cli"}]}
  • Een kop [table] wordt een JSON-object, en sleutels met punten zoals a.b.c = 1 worden geneste objecten.
  • Een array van tabellen, [[bin]], wordt een JSON-array van objecten.
  • Inline tabellen { x = 1 } en arrays werken zoals je verwacht. Commentaar valt weg, want JSON kent geen commentaar.

Waar de twee formaten verschillen

Datums en tijden. TOML heeft vier eigen datum-tijdtypen; JSON heeft er geen. De converter schrijft ze als ISO 8601-strings en behoudt hun soort: een datum-tijd met offset blijft 1979-05-27T07:32:00.000-08:00, een lokale datum blijft 1979-05-27 en een lokale tijd blijft 07:32:00.000. Fracties van seconden blijven tot op de milliseconde behouden. Terug naar TOML levert gewone strings op, omdat niets in JSON aangeeft dat het datums zijn.

Gehele getallen. Gehele getallen in TOML zijn 64-bits met teken, van −9.223.372.036.854.775.808 tot 9.223.372.036.854.775.807. JavaScript-getallen, die de meeste JSON-parsers gebruiken, zijn maar exact tot 2^53 (9.007.199.254.740.991). Grotere TOML-getallen worden met alle cijfers geschreven, wat geldige JSON is, maar een programma dat ze als double inleest, rondt ze af; vink Grote gehele getallen als strings aan om dat te voorkomen. Een geheel getal buiten het 64-bitsbereik wordt geweigerd, zoals de TOML-specificatie voorschrijft.

Speciale kommagetallen. inf, -inf en nan bestaan niet in JSON, dus ze worden geschreven als de strings "inf", "-inf" en "nan".

JSON → TOML. Een TOML-document is altijd een tabel, dus de JSON moet op het hoogste niveau een object zijn. TOML kent geen null: standaard worden null-waarden weggelaten en een melding zegt hoeveel; vink Null-waarden weglaten uit om in plaats daarvan een fout te krijgen met de plek van de eerste. JSON maakt geen onderscheid tussen 1 en 1.0, dus gehele getallen worden TOML-integers, en getallen die te groot zijn voor 64 bits worden kommagetallen. In recente browsers behouden grote gehele getallen in je JSON hun exacte cijfers.

Veelgestelde vragen

Wordt mijn configuratie ergens naartoe gestuurd?

Nee. De omzetting gebeurt volledig in je browser, dus API-sleutels of geheimen in je configuratiebestanden verlaten je computer nooit.

Waarom is de volgorde van mijn sleutels in de TOML veranderd?

TOML vereist dat gewone sleutel-waardeparen in elke tabel vóór de subtabellen komen, dus de converter schrijft eerst de waarden, dan de [tables] en daarna de [[arrays of tables]]. De gegevens zijn hetzelfde.

Blijft TOML-commentaar behouden?

Nee. JSON kent geen commentaar, dus het gaat verloren bij TOML → JSON, en op de terugweg is er niets om te herstellen.

Welke TOML-versie wordt ondersteund?

TOML 1.0, inclusief sleutels met punten, inline tabellen, arrays van tabellen, hexadecimale, octale en binaire gehele getallen en alle vier de datum-tijdtypen.

Waarom is mijn datum in JSON een string?

JSON heeft geen datumtype. ISO 8601-strings zijn de gangbare conventie, en de meeste programmeertalen kunnen ze direct inlezen.