Comparatifs Développement

TOML vs YAML vs JSON

Trois formats de configuration comparés : commentaires, lisibilité, types de données, pièges et usages courants, avec la même configuration écrite dans les trois et vérifiée pour produire des données identiques.

Dernière vérification :

AdSense Placeholder
Slot: header_reference_page
Sur cette page

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 NO comme false, 01234 comme le nombre 668 (octal) et 12:30 comme 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 ; 9007199254740993 devient 9007199254740992 en 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.

Essayez ces outils

Voir aussi

  • Aide-mémoire Aide-mémoire de la syntaxe TOML
    Tous les types de valeurs TOML, tables, tableaux de tables, clés pointées, chaînes et dates sur une page.
  • Aide-mémoire Fiche pratique de la syntaxe YAML
    Aide-mémoire YAML : scalaires, chaînes, listes, mappages, texte multiligne, ancres.
  • Comparatif JSON, YAML ou XML
    JSON pour les API et l'échange de données, YAML pour la configuration écrite à la main, XML pour les documents et les normes à schémas.
  • Glossaire TOML
    TOML est un petit format de fichier de configuration aux types et sections clairs.
  • Glossaire YAML
    Le YAML est un format de données lisible par les humains qui utilise l'indentation plutôt que des accolades.
  • Guide Comment fonctionne JSON
    Les six types de valeur JSON, pourquoi l'analyse échoue, pièges des grands entiers et de l'ordre des clés.

Questions fréquemment posées

Pour un fichier édité à la main, TOML est le choix le plus sûr : il est petit, strict et accepte les commentaires. YAML convient aux fichiers très imbriqués déjà liés à des outils YAML comme Kubernetes. Utilisez JSON pour les données échangées entre programmes.

Les analyseurs YAML 1.1 transforment en booléens des mots sans guillemets comme NO, lisent 01234 comme de l'octal et 12:30 comme un nombre. Mettez entre guillemets les chaînes qui doivent rester du texte.

AdSense Placeholder
Slot: footer_leaderboard