Skip to main content
CheckTown
Converters

TOML to JSON Converter: Bidirectional Format Conversion

Gepubliceerd 4 min lezen
In dit artikel

Wat is TOML?

TOML (Tom's Obvious Minimal Language) is een configuratiebestandsformaat dat is ontworpen om gemakkelijk te lezen en te schrijven. Gemaakt door Tom Preston-Werner (medeoprichter van GitHub) in 2013, mapt TOML ondubbelzinnig naar een hashtabel, waardoor het eenvoudig is om te parsen naar datastructuren in elke programmeertaal.

In tegenstelling tot YAML dat afhankelijk is van inspringen en talloze valkuilen heeft, of JSON dat geen commentaar en afsluitende komma's ondersteunt, biedt TOML een middenweg: expliciet typen (strings, integers, floats, booleans, datums), duidelijke tabelsyntax met [haakjes], en ondersteuning voor inline tabellen en arrays — allemaal zonder de dubbelzinnigheid die andere configuratieformaten teistert.

Hoe TOML-naar-JSON-conversie werkt

Het converteren tussen TOML en JSON omvat het parsen van het bronformaat naar een tussenliggende datastructuur en het serialiseren naar het doelformaat. Elk TOML-type mapt direct naar een JSON-equivalent.

  • Sleutel-waardeparen — TOML's sleutel = waarde syntaxis mapt naar JSON-objecteigenschappen; gestippelde sleutels zoals server.port worden geneste objecten
  • Tabellen en arrays — TOML [tabel]-headers worden JSON-objecten, en [[array-van-tabellen]] worden JSON-arrays van objecten, waarbij de hierarchische structuur behouden blijft
  • Typesysteem — TOML's native types (string, integer, float, boolean, datetime) mappen naar JSON-primitieven; datetime-waarden worden geserialiseerd als ISO 8601-strings aangezien JSON geen datumtype heeft

Probeer gratis — geen aanmelding vereist

Converteer TOML naar JSON →

Waar TOML wordt gebruikt

TOML is door verschillende grote ecosystemen geadopteerd als het voorkeursconfiguratie-formaat vanwege zijn duidelijkheid en striktheid.

  • Rust-ecosysteem — Cargo.toml is het pakketmanifest voor elk Rust-project, dat afhankelijkheden, build-instellingen en metadata definieert in een formaat dat zowel door mensen bewerkbaar als door machines parseerbaar is
  • Python-packaging — pyproject.toml (PEP 518/621) is de standaard geworden voor Python-projectconfiguratie en vervangt setup.py en setup.cfg door een schoner, declaratief formaat
  • Statische sitegeneratoren — Hugo gebruikt config.toml voor siteconfiguratie, en veel andere tools (Deno, InfluxDB, Netlify) gebruiken TOML voor hun configuratiebestanden

Veelgestelde vragen

Wat zijn de verschillen tussen TOML, YAML en JSON voor configuratie?

JSON is het eenvoudigst maar mist commentaar en afsluitende komma's, wat het onhandig maakt voor door mensen bewerkte configuratiebestanden. YAML ondersteunt commentaar en is visueel schoon maar de op inspringen gebaseerde syntaxis leidt tot subtiele bugs. TOML ondersteunt commentaar, heeft expliciet typen en vermijdt op inspringen gebaseerde parsing — waardoor het de veiligste keuze is voor configuratiebestanden die mensen direct bewerken.

Wat zijn de beperkingen van TOML?

TOML kan omslachtig worden voor diep geneste structuren aangezien elk nestniveau zijn eigen [tabel.subtabel]-header vereist. Het mist ook een null-type (in tegenstelling tot JSON en YAML), wat betekent dat ontbrekende waarden moeten worden afgehandeld door de sleutel volledig weg te laten.

Hoe gaat TOML om met datums en tijden?

TOML heeft eersteklas ondersteuning voor datum- en tijdtypes volgens RFC 3339: offset datetime (2024-01-15T10:30:00Z), lokale datetime (2024-01-15T10:30:00), lokale datum (2024-01-15) en lokale tijd (10:30:00). Bij conversie naar JSON worden deze geserialiseerd als ISO 8601-strings aangezien JSON geen native datumtype heeft.

Gerelateerde Tools