TOML-konfig (.toml)
TOML StandardTom's Obvious Minimal Language (TOML) är et tvetydigt, människocentrerat konfigurationsformat som skapades av GitHub-medgrundaren Tom Preston-Werner, och som har tagits i bred användning i moderna programmeringsekosystem som 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 & Metadata
Operativsystem och filanalysverktyg identifierar TOML-filer genom att granska den inledande binära bytesekvensen:
Signatur för filhuvud på bytenivå (Magic Bytes)
Operativsystem och filanalysverktyg identifierar TOML-filer genom att granska den inledande binära bytesekvensen:
HEX-SIGNATUR (OFFSET 0):
5B ... 5DASCII-REPRESENTATION: [...]
Standardisering: TOML v1.0.0 Specification
Tekniska specifikationer
| Containerarkitektur | Human-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs |
| Komprimering | Uncompressed text stream |
| Bytessordinning | UTF-8 text stream |
| Färgrymder | N/A (Configuration File) |
| Kanaler och struktur | Tables, arrays of tables, inline tables, strings, integers, floats, booleans, and RFC 3339 datetimes |
| Maximala dimensioner | Unbounded text length |
| Transparens | None |
| Strömning och progressiv | Sequential line-by-line configuration parsing |
Teknisk jämförelsematris: TOML vs 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 datatypstyper för tid och datum | 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 TOML Formatter.
Säkerhetsanalys och attackvektorer för tolkar
TOML-parserare måste skydda mot prototyppolution och CPU-utmattning från patologiska kapslingar av tabellarrayer.
Kända attackvektorer
- Prototyp-pollution i JavaScript TOML-parserare som injicerar egenskaper i Object.prototype.
- Denial of service genom djupt kapslade deklarationer av tabellarrayer.
- Obegränsad minnesallokering vid parsning av massiva inbäddade arrayer.
Rekommenderade skyddsåtgärder:
Historiskt ursprung och milstolpar
Viktiga fördelar
- Helt otvetydigt: mappar rent och förutsägbart till en hashtabell utan överraskande typomvandling.
- Första klassens inbyggda stöd för datum och tid (RFC 3339-tidsstämplar, datum, klockslag) utan strängeskapering.
- 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ångsidiga jämfört med YAML.
- Syntaxen för tabellarrayer ([[table.array]]) kan vara oたちはis intuitiv 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).
- Filen 'Cargo.toml' i varje Rust-projekt anger alla beroenden och kompilatorflaggor i TOML-format.
- 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, Pytons 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 för specialfall (som att ett okoquoterat 'NO' blir det booleska värdet false), samtidigt som det förblir mänskligt vänligt med 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 egenskapssinstä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.