MaisTools
Guides/

JSON vs YAML vs XML vs TOML vs INI vs CSV

Comparaison directe entre les formats de sérialisation de données les plus courants. Syntaxe, caractéristiques et contexte d'usage de chacun.

Tableau comparatif
FormatCommentairesVerbositéTypesLisibilitéUsage typique
JSON
.json
NonMoyenneBasiquesMoyenneAPI web, configuration frontend
YAML
.yaml / .yml
OuiFaibleBasiquesÉlevéePipelines CI/CD, infrastructure as code
XML
.xml
OuiÉlevéeTexte uniquementFaibleSystèmes d'entreprise, documents, SOAP
TOML
.toml
OuiMoyenneRicheÉlevéeConfiguration d'applications, outils de développement
INI
.ini / .conf
OuiFaibleTexte uniquementÉlevéeConfiguration simple, fichiers hérités
CSV
.csv
NonFaibleTabulaireMoyenneTableurs, export de données tabulaires

Détail par format

JSON.json
JavaScript Object Notation

Format dérivé de la syntaxe d'objets JavaScript. Il est devenu la lingua franca des échanges de données sur le web grâce à sa simplicité et à sa prise en charge native par tous les langages modernes.

Exemple
{
  "server": {
    "host": "localhost",
    "port": 8080,
    "debug": false,
    "tags": ["web", "api"]
  }
}
Avantages
  • +Pris en charge nativement par presque tous les langages
  • +Syntaxe simple et prévisible
  • +Parsing rapide et peu coûteux
  • +Structure hiérarchique claire
Inconvénients
  • Pas de commentaires, ce qui limite son utilité pour les fichiers de configuration édités à la main
  • Peu tolérant aux erreurs de syntaxe (une virgule en trop et le parsing échoue)
  • Verbeux pour une configuration longue à cause des guillemets et accolades obligatoires
Quand l'utiliser

Requêtes et réponses d'API REST, stockage de données structurées, communication entre services. Partout où la lisibilité humaine passe après l'interopérabilité.

YAML.yaml / .yml
YAML Ain't Markup Language

Format pensé pour la lisibilité humaine, avec une syntaxe basée sur l'indentation plutôt que sur des accolades. C'est un sur-ensemble de JSON.

Exemple
server:
  host: localhost
  port: 8080
  debug: false
  tags:
    - web
    - api
Avantages
  • +Très lisible, sans le bruit visuel des accolades et guillemets
  • +Prend en charge les commentaires et les références internes
  • +Excellent pour les fichiers édités manuellement
  • +Structures complexes avec peu de syntaxe
Inconvénients
  • L'indentation significative est une source fréquente de bugs (tabulations vs espaces)
  • Spécification volumineuse, avec des cas particuliers surprenants ("yes" et "no" interprétés comme booléens)
  • Parsing plus lent et dépendant de bibliothèques externes dans certains langages
Quand l'utiliser

Pipelines CI/CD, définitions de conteneurs, configuration d'orchestrateurs et tout fichier de configuration long qui bénéficie de commentaires et d'une structure claire.

XML.xml
Extensible Markup Language

Format à base de balises avec des racines dans SGML. Il fut pendant des années le standard des échanges de données structurées avant que JSON ne prenne le relais.

Exemple
<server>
  <host>localhost</host>
  <port>8080</port>
  <debug>false</debug>
  <tags>
    <tag>web</tag>
    <tag>api</tag>
  </tags>
</server>
Avantages
  • +Schémas formels matures (XSD, DTD) pour une validation stricte
  • +Bonne prise en charge des métadonnées via attributs et espaces de noms
  • +Écosystème puissant de transformations avec XSLT et de requêtes avec XPath
  • +Idéal pour des documents à contenu mixte (texte et structure)
Inconvénients
  • Très verbeux, les balises d'ouverture et de fermeture doublent le volume
  • La distinction entre attributs et éléments est arbitraire et divise
  • Plus difficile à lire et à écrire à la main que les alternatives modernes
Quand l'utiliser

Intégrations avec des systèmes hérités ou d'entreprise, documents à structure complexe, formats où la validation rigoureuse par schéma est obligatoire (facturation électronique, fichiers bureautiques).

TOML.toml
Tom's Obvious Minimal Language

Format relativement récent, conçu pour être évident et non ambigu. Il combine des sections de style INI avec des types de données riches et la prise en charge des structures imbriquées.

Exemple
[server]
host = "localhost"
port = 8080
debug = false
tags = ["web", "api"]
Avantages
  • +Spécification courte sans cas ambigus
  • +Types natifs pour les dates, nombres et tableaux
  • +Prend en charge commentaires et sections nommées
  • +Équilibre entre lisibilité et parsing fiable
Inconvénients
  • Moins universel, hors des écosystèmes qui l'ont adopté il peut sembler exotique
  • Les structures profondément imbriquées deviennent plus verbeuses qu'en YAML
  • Communauté encore en croissance, moins d'outils annexes
Quand l'utiliser

Fichiers de configuration de projets modernes, manifestes de paquets, tout cas où vous voulez une syntaxe propre sans les pièges d'indentation de YAML.

INI.ini / .conf
Initialization File

L'un des formats les plus anciens encore utilisés. Structuré en sections entre crochets et paires clé valeur. Il n'existe pas de spécification formelle unique, ce qui produit des variantes incompatibles.

Exemple
[server]
host = localhost
port = 8080
debug = false
tags = web,api
Avantages
  • +Extrêmement simple à lire et à écrire
  • +Trivial à parser, même avec votre propre code
  • +Pris en charge par de nombreux systèmes et outils
  • +Accepte commentaires et sections
Inconvénients
  • Pas de standard formel, chaque implémentation diffère
  • Pas de hiérarchie profonde au delà d'une section
  • Toutes les valeurs sont des chaînes, la conversion de types est laissée à l'application
  • Pas de prise en charge native des listes structurées
Quand l'utiliser

Configuration plate de petits outils, fichiers utilisateur sur Windows et Linux, cas où la simplicité l'emporte sur les fonctionnalités.

CSV.csv
Comma-Separated Values

Format pour données tabulaires : une ligne par enregistrement, valeurs séparées par des virgules. Il existe depuis des décennies et reste l'outil de tous les jours pour l'échange entre tableurs, bases de données et outils d'analyse.

Exemple
host,port,debug,tags
localhost,8080,false,"web,api"
example.com,443,true,"web"
Avantages
  • +Universel entre tableurs, bases de données et outils statistiques
  • +Compact pour des données purement tabulaires
  • +Le streaming ligne par ligne permet de gros fichiers
  • +Modifiable dans n'importe quel outil, d'Excel à Vim
Inconvénients
  • Pas de hiérarchie, c'est juste un tableau plat
  • Pas de types, tout est chaîne, sans distinction entre nombre et texte
  • La gestion des guillemets, virgules dans les valeurs et sauts de ligne est une source classique de bugs
  • Variations régionales (virgule vs point virgule comme séparateur)
Quand l'utiliser

Export de rapports, import dans des tableurs, jeux de données pour l'analyse statistique, tout scénario où les données sont réellement tabulaires.

À propos de cet outil

Comparaison directe entre six formats de sérialisation très utilisés : JSON, YAML, XML, TOML, INI et CSV. Pour chacun, vous trouverez la syntaxe côte à côte, les points forts, les points faibles et le contexte dans lequel il est pertinent de le choisir. Utile pour décider du format de configuration d'une nouvelle application, vous mettre à jour rapidement sur un format que vous ne maîtrisez pas, ou étayer une décision technique par des arguments concrets.

Comment l'utiliser

  1. Lisez le tableau comparatif pour avoir une vue d'ensemble des caractéristiques de chaque format.
  2. Comparez les exemples côte à côte. Ils représentent tous le même objet pour faciliter la comparaison.
  3. Choisissez selon le contexte. Certains formats sont meilleurs pour la configuration éditée à la main, d'autres pour l'échange entre systèmes.

Questions fréquentes

Quel format est le plus utilisé aujourd'hui ?
JSON domine le web sans conteste, c'est le format par défaut des API REST et de la configuration frontend. YAML règne en DevOps et infrastructure, en particulier dans les pipelines CI et les définitions de conteneurs. XML reste présent dans les environnements d'entreprise et les formats à structure documentaire complexe. TOML a beaucoup gagné de terrain dans les écosystèmes d'outils de développement. CSV demeure le standard pour les données tabulaires.
Peut on convertir entre formats ?
Oui, dans la plupart des cas. JSON, YAML et TOML ont des modèles de données proches et la conversion entre eux est presque directe. XML est plus complexe à cause des attributs et du contenu mixte, mais il existe des correspondances communes. CSV ne représente que des tables, donc convertir vers du hiérarchique ou inversement implique de décider comment aplatir la structure.
Pourquoi YAML est il si problématique ?
Sa spécification est bien plus volumineuse qu'il n'y paraît. Certains mots clés ("yes", "no", "on", "off") sont interprétés comme des booléens, les nombres avec des zéros initiaux peuvent être lus en octal, et l'indentation par espaces ou tabulations provoque des erreurs silencieuses. Les versions plus récentes (YAML 1.2) ont corrigé certains points, mais il faut rester attentif au mode strict du parser.
JSON5 et JSONC résolvent ils l'absence de commentaires dans JSON ?
Oui, ce sont des variantes de JSON qui ajoutent les commentaires et un peu de souplesse (virgules finales, clés sans guillemets). Ce ne sont pas des standards universels, mais ils sont pris en charge dans des contextes précis comme les éditeurs de code. Pour l'échange entre systèmes, restez sur du JSON pur pour garantir la compatibilité.
Quand choisir TOML plutôt que YAML ?
TOML est préférable lorsque vous voulez une syntaxe propre pour la configuration sans les pièges de l'indentation significative. Pour des fichiers de configuration de projet à structure moyenne, TOML est généralement moins source d'erreurs. YAML est préférable pour des structures très profondes ou lorsque vous avez besoin de références internes et de fonctionnalités avancées.