TOML-konfig (.toml)
TOML StandardTom's Obvious Minimal Language (TOML) är ett entydigt, människovänligt konfigurationsformat skapat av GitHubs medgrundare Tom Preston-Werner. Det har fått bred spridning i moderna programmeringsekosystem, bland annat Rust (Cargo) och Python (pyproject.toml).
Konvertera TOML till JSON
Gratis konverterare från TOML till JSON i webbläsaren. Konvertera filer direkt på din enhet.
Granska och metadata
Operativsystem och filanalysverktyg identifierar TOML-filer genom att granska den inledande sekvensen av binära byte:
Signatur i filhuvudet på bytenivå (magiska byte)
Operativsystem och filanalysverktyg identifierar TOML-filer genom att granska den inledande sekvensen av binära byte:
HEX-SIGNATUR (OFFSET 0):
5B ... 5DASCII-REPRESENTATION: [...]
Standardisering: TOML v1.0.0 Specification
Tekniska specifikationer
| Containerarkitektur | Människoläsbar konfigurationsfil som entydigt motsvarar en hashtabell och är strukturerad med [tables] och nyckel = värde-par |
| Komprimering | Okomprimerad textström |
| Byteordning | UTF-8-textström |
| Färgrymder | Ej tillämpligt (konfigurationsfil) |
| Kanaler och struktur | Tabeller, arrayer av tabeller, inbäddade tabeller, strängar, heltal, flyttal, booleska värden och datum/tid enligt RFC 3339 |
| Maximala dimensioner | Obegränsad textlängd |
| Transparens | Ingen |
| Strömning och progressiv visning | Sekventiell konfigurationsparsning rad för rad |
Teknisk jämförelsematris: TOML jämfört med konkurrenter
| Tekniskt attribut | TOML (Aktuell) | YAML | JSON | INI |
|---|---|---|---|---|
| Risker för tvetydighet | Noll (strikt otvetydig specifikation) | Hög (boolska fel p.g.a. YAML:s 'Norway problem') | Noll (strikta datatyper) | Måttlig (ingen formell standard) |
| Inbyggda datum- och tidsdatatyper | Inbyggt stöd för RFC 3339-datum och -tid | Implicit tolkning av strängar/datum | Inga (endast strängar) | Inga (endast strängar) |
| Stöd för kommentarer | Inbyggt (#-kommentarer) | Inbyggt (#-kommentarer) | Inga kommentarer tillåtna | Inbyggt (; och #-kommentarer) |
| Primärt ekosystem | Rust (Cargo), Python (PEP 518), Go | Kubernetes, Ansible, CI/CD-pipelines | Webb-API:er, webbläsarkommunikation | Äldre Windows, Git-konfig |
Vanliga skadeorsaker och hex-återställningsguide
Parserfel: 'Duplicate key in table' eller 'Invalid table header'.
Grundorsak: Försök att omdefiniera en befintlig nyckel eller tabellnamnrymd i dokumentet.
Återställning: Validera och omformatera TOML-syntaxen med File2File.app TOML Formatter.
Säkerhetsanalys och attackvektorer för tolkar
TOML-tolkar måste skydda mot prototype pollution och överbelastning av processorn vid extremt djup nästling av tabellarrayer.
Kända attackvektorer
- Prototypförgiftning i JavaScript TOML-parserare som injicerar egenskaper i Object.prototype.
- Tjänsteavbrott (DoS) genom djupt nästlade deklarationer av tabellarrayer.
- Obegränsad minnesallokering när mycket stora inbäddade arrayer tolkas.
Rekommenderade skyddsåtgärder: Begränsa hur djupt tabeller får nästlas och använd ordboksobjekt som skyddar mot prototype pollution.
Historiskt ursprung och milstolpar
Viktiga fördelar
- Helt entydigt: motsvarar en hashtabell på ett tydligt och förutsägbart sätt, utan oväntade typkonverteringar.
- Inbyggt stöd för datum och tider (RFC 3339-tidsstämplar, datum och klockslag) utan särskilda escape-sekvenser i strängar.
- Antaget som det officiella standardkonfigurationsformatet för moderna språkverktyg (Rust Cargo.toml, Python pyproject.toml).
Tekniska begränsningar
- Djupt kapslade objektträd i flera nivåer kan bli mångordiga jämfört med YAML.
- Syntaxen för arrayer av tabeller ([[table.array]]) kan vara svår att förstå för nybörjare.
- Mindre kompakt än JSON för maskin-till-maskin-API-datautbyte med högt dataflöde.
Intressant teknisk kuriosa
- TOML skapades av Tom Preston-Werner, som även var med och grundade GitHub samt skapade Gravatar och SemVer (Semantic Versioning).
- Cargo-paket använder Cargo.toml för metadata, beroenden och mål; Rust-projekt med andra byggsystem kan använda andra filer.
- Till skillnad från JSON har TOML inbyggt stöd för kommentarer (med tecknet '#') och flerradiga strängar.
Vanliga tekniska frågor
Vad används TOML till?
TOML används för programvarukonfiguration, mest framträdande i Rusts Cargo.toml, Pythons pyproject.toml, Go Hugo-konfigurationer och containerverktyg.
Varför föredras TOML framför YAML för konfiguration?
TOML undviker YAML:s ökända tolkningsbuggar i specialfall (som att 'NO' utan citattecken blir det booleska värdet false), samtidigt som det är lättläst och har kommentarer och tydliga tabeller.
Hur kan jag konvertera TOML till JSON eller YAML?
Du kan konvertera TOML-filer till JSON eller YAML omedelbart med File2File.app direkt i din webbläsare.
Relaterade konverteringspar för TOML
Omvandling av TOML-konfigurationsfiler till JSON-format översätter människovänliga egenskapsinställningar till ett strikt dataobjekt som webbapplikationer kan tolka omedelbart.
Konvertering av JSON-konfigurationsfiler till TOML-format förenklar manuell redigering samtidigt som all strukturerad nyckel-värde-data och hierarkier bevaras.