Dans cet article
Qu'est-ce que TOML ?
TOML (Tom's Obvious Minimal Language) est un format de fichier de configuration concu pour etre facile a lire et a ecrire. Cree par Tom Preston-Werner (co-fondateur de GitHub) en 2013, TOML correspond de maniere non ambigue a une table de hachage, ce qui le rend simple a analyser en structures de donnees dans tout langage de programmation. Sa syntaxe claire privilegie la lisibilite humaine sur la flexibilite.
Contrairement a YAML qui repose sur l'indentation et presente de nombreux pieges, ou JSON qui ne supporte ni les commentaires ni les virgules finales, TOML offre un juste milieu : typage explicite (chaines, entiers, flottants, booleens, dates), syntaxe de table claire avec des [crochets], et support des tables en ligne et des tableaux — le tout sans l'ambiguite qui affecte d'autres formats de configuration.
Comment fonctionne la conversion TOML vers JSON
La conversion entre TOML et JSON implique l'analyse du format source en une structure de donnees intermediaire et sa serialisation dans le format cible. Chaque type TOML correspond directement a un equivalent JSON.
- Paires cle-valeur — la syntaxe cle = valeur de TOML correspond aux proprietes d'objets JSON ; les cles pointees comme server.port deviennent des objets imbriques
- Tables et tableaux — les en-tetes [table] TOML deviennent des objets JSON, et les [[tableaux-de-tables]] deviennent des tableaux d'objets JSON, preservant la structure hierarchique
- Systeme de types — les types natifs TOML (chaine, entier, flottant, booleen, datetime) correspondent aux primitives JSON ; les valeurs datetime sont serialisees en chaines ISO 8601 car JSON n'a pas de type date
Essayez gratuitement — sans inscription
Convertir TOML en JSON →Ou TOML est utilise
TOML a ete adopte par plusieurs ecosystemes majeurs comme format de configuration privilegie grace a sa clarte et sa rigueur.
- Ecosysteme Rust — Cargo.toml est le manifeste de package pour chaque projet Rust, definissant les dependances, les parametres de build et les metadonnees dans un format a la fois editable par l'homme et analysable par la machine
- Packaging Python — pyproject.toml (PEP 518/621) est devenu le standard pour la configuration des projets Python, remplacant setup.py et setup.cfg par un format declaratif plus propre
- Generateurs de sites statiques — Hugo utilise config.toml pour la configuration du site, et de nombreux autres outils (Deno, InfluxDB, Netlify) utilisent TOML pour leurs fichiers de configuration
Foire aux questions
Quelles sont les differences entre TOML, YAML et JSON pour la configuration ?
JSON est le plus simple mais ne supporte ni les commentaires ni les virgules finales, ce qui le rend peu pratique pour les fichiers de configuration edites manuellement. YAML supporte les commentaires et est visuellement propre mais sa syntaxe basee sur l'indentation mene a des bugs subtils (le probleme de la Norvege, la coercition de type implicite). TOML supporte les commentaires, a un typage explicite et evite l'analyse basee sur l'indentation — en faisant le choix le plus sur pour les fichiers de configuration edites directement par des humains.
Quelles sont les limitations de TOML ?
TOML peut devenir verbeux pour les structures profondement imbriquees car chaque niveau d'imbrication necessite son propre en-tete [table.sous-table]. Il n'a pas non plus de type null (contrairement a JSON et YAML), ce qui signifie que les valeurs absentes doivent etre gerees en omettant completement la cle. Pour des donnees complexes avec de nombreux niveaux d'imbrication, JSON ou YAML peuvent etre plus compacts.
Comment TOML gere-t-il les dates et heures ?
TOML prend en charge nativement les types de date et d'heure selon RFC 3339 : datetime avec decalage (2024-01-15T10:30:00Z), datetime local (2024-01-15T10:30:00), date locale (2024-01-15) et heure locale (10:30:00). Lors de la conversion en JSON, ceux-ci sont serialises en chaines ISO 8601 car JSON n'a pas de type date natif. Ce support natif des dates est l'un des avantages de TOML par rapport a JSON et YAML.