Les mêmes réglages peuvent s'écrire en TOML, en YAML ou en JSON. Les trois exemples ci-dessous contiennent des données identiques : analysés avec tomllib de Python, PyYAML et json, ils donnent des résultats égaux. Convertissez de l'un à l'autre avec le convertisseur TOML vers JSON, le convertisseur JSON vers TOML, le convertisseur JSON vers YAML et le convertisseur YAML vers JSON.
La même configuration de trois façons
TOML
title = "Demo"
debug = false
ports = [8000, 8001]
[database]
host = "localhost"
max_connections = 50
YAML
title: Demo
debug: false
ports: [8000, 8001]
database:
host: localhost
max_connections: 50
JSON
{
"title": "Demo",
"debug": false,
"ports": [8000, 8001],
"database": {
"host": "localhost",
"max_connections": 50
}
}
En un coup d'œil
| TOML | YAML | JSON | |
|---|---|---|---|
| Commentaires | Oui (#) |
Oui (#) |
Non |
| Structure | Tables et clés ; pas de règles d'indentation | Indentation | Accolades et crochets |
| Dates et heures | Types natifs | Natifs (selon la version) | Chaînes uniquement |
| Virgules finales | Permises dans les tableaux | Sans objet | Interdites |
| Clés en double | Erreur | Selon l'analyseur | Selon l'analyseur |
| Valeur nulle | Aucune | null ou ~ |
null |
| Idéal pour | Configuration éditée à la main | Configurations et manifestes très imbriqués | Échange de données et API |
Pièges
- Les analyseurs YAML 1.1 (PyYAML et de nombreux outils anciens) lisent
NOcommefalse,01234comme le nombre 668 (octal) et12:30comme 750 (base 60). Mettez entre guillemets tout ce qui doit rester une chaîne. - JSON n'a pas de commentaires et de nombreux analyseurs stockent les nombres en double ;
9007199254740993devient9007199254740992en JavaScript. - TOML est malcommode pour les données très imbriquées et les longs tableaux d'objets hétérogènes ; répéter les en-têtes de table à doubles crochets devient verbeux.
- Les clés en double sont une erreur en TOML et sont écrasées sans bruit par certains analyseurs YAML et JSON.
Lequel choisir
- Réglages d'application écrits à la main : TOML.
- Manifestes Kubernetes, pipelines CI et autres écosystèmes bâtis dessus : YAML.
- Données de navigateur, d'API et de machine à machine : JSON. Vérifiez qu'un document est valide avec le validateur JSON.