JSON vs XML vs YAML : choisir le bon format de données
JSON, XML et YAML peuvent décrire les mêmes données, qu'il s'agisse d'un enregistrement utilisateur, d'un fichier de configuration ou d'une charge utile d'API, mais chacun optimise autre chose. Un mauvais choix se paie plus tard : diffs de configuration illisibles ou analyseur incapable d'exprimer ce dont vous avez besoin. Ce guide compare les trois formats face à face et donne une règle concrète pour chacun.
Les mêmes données, trois façons
Ci-dessous, un petit objet écrit dans les trois formats. En les comparant côte à côte, vous voyez ce que chacun sacrifie.
{
"user": {
"name": "Ada Lovelace",
"roles": ["admin", "editor"],
"active": true
}
}user:
name: Ada Lovelace
roles:
- admin
- editor
active: true<user active="true">
<name>Ada Lovelace</name>
<roles>
<role>admin</role>
<role>editor</role>
</roles>
</user>Trois champs identiques, trois quantités de ponctuation très différentes. Cette différence résume tout : JSON est le plus adapté aux machines, YAML le plus agréable à écrire à la main pour un humain, et XML le plus expressif quand le document lui-même exige une structure au-delà de simples paires clé/valeur.
Là où JSON gagne
JSON correspond directement aux structures de données que tous les langages courants possèdent déjà (objets/dicts et tableaux/listes), donc l'analyse produit des types natifs sans ambiguïté. Pas de commentaires, une seule façon d'écrire chaque valeur, aucune sensibilité aux espaces. Ces limites le rendent rapide à analyser et sûr à générer depuis du code.
Utilisez JSON pour tout ce qui est machine-à-machine : charges utiles d'API REST et GraphQL, données transmises entre services, tout ce qui est stocké dans une base documentaire (MongoDB, le type JSONB de PostgreSQL), et toute configuration principalement lue et écrite par du code plutôt qu'éditée à la main.
Là où YAML gagne
YAML est un sur-ensemble strict du modèle de données de JSON avec une syntaxe bien plus agréable pour les humains : pas d'accolades fermantes à compter, des commentaires avec #, et l'indentation à la place de la ponctuation. Vous voulez cela pour des fichiers qu'une personne édite et relit dans un diff : pipelines CI (GitHub Actions, GitLab CI), manifests Kubernetes et configuration d'application.
Cette souplesse est aussi le plus grand piège de YAML. Une erreur d'indentation produit une structure différente sans la moindre erreur d'analyse, et l'analyseur peut convertir des valeurs non citées comme `no`, `yes`, `on` ou des dates en booléens ou en horodatages non voulus (le fameux « problème de la Norvège », où le code pays NO devient le booléen false). Mettez vos chaînes entre guillemets dès qu'une valeur peut se lire de deux façons.
Là où XML gagne
XML peut ressembler à un héritage encombrant face à JSON, mais il fait des choses que ni JSON ni YAML ne peuvent : des attributs à côté du contenu des éléments, du contenu mixte (texte et éléments entrelacés, comme HTML), des espaces de noms pour combiner des vocabulaires de sources différentes, et des outils matures de validation par schéma (XSD) et de transformation (XSLT) qui précèdent JSON d'une décennie.
XML persiste dans les domaines centrés sur le document : API SOAP, SVG, DOCX/XLSX (des fichiers ZIP pleins de XML) et systèmes d'entreprise de la banque, de la santé et de l'administration, avec des pipelines validés XSD que personne ne compte réécrire. Si vos données ont une forme de document (« un paragraphe avec une portion en gras au milieu ») plutôt que d'enregistrement, XML convient souvent mieux.
Convertir entre les formats
Les trois décrivent le même modèle de données objet/tableau/chaîne/nombre/booléen/null (seuls les attributs et le contenu mixte de XML ne se convertissent pas proprement), donc convertir des données de forme enregistrement entre JSON, YAML et XML reste mécanique. Les outils JSON to YAML, YAML to JSON, JSON to XML et XML to JSON de JsonForge convertissent dans le navigateur, pratique pour migrer le format d'un fichier de configuration ou fournir un export JSON à un collègue qui ne jure que par YAML.
FAQ
- YAML est-il juste du JSON avec une syntaxe différente ?
- Presque. YAML 1.2 est un sur-ensemble de JSON, donc tout document JSON valide est aussi du YAML valide. YAML ajoute des fonctionnalités absentes de JSON (commentaires, ancres/références, fichiers multi-documents) et ses propres particularités d'analyse (conversion implicite de types), donc l'inverse ne tient pas : beaucoup de YAML n'est pas du JSON valide.
- Pourquoi Kubernetes et les outils CI utilisent YAML plutôt que JSON ?
- Parce que ces fichiers sont écrits et relus à la main en permanence. L'absence d'accolades et la prise en charge des commentaires rendent YAML bien plus agréable à lire et à différer dans une pull request que le JSON équivalent, même si JSON s'analyserait à l'identique.
- Pourquoi XML existe-t-il encore si JSON est plus simple ?
- XML prend en charge des choses que JSON ne peut pas exprimer : des attributs sur les éléments, du contenu mixte texte/éléments, des espaces de noms et la validation par schéma via XSD. Les formats bâtis sur XML (SVG, DOCX, XLSX, SOAP) reposent sur ces fonctionnalités, et c'est pourquoi XML reste là même si JSON a gagné pour les API REST classiques.
- Qu'est-ce que le « problème de la Norvège » en YAML ?
- En YAML, l'analyseur lit `NO` non cité (le code pays de la Norvège) comme le booléen `false`, car YAML convertit `no`/`yes`/`on`/`off` non cités en booléens. Mettez entre guillemets les codes pays, les chaînes de version et tout ce qui ressemble à un booléen ou à un nombre mais doit rester une chaîne littérale.
Essayez ces outils
JSON to YAML →
Convert JSON to YAML and back, with type inference and clean formatting.
YAML to JSON →
Convert YAML configs — CI pipelines, Kubernetes manifests, OpenAPI specs — into JSON, with precise parse errors.
JSON to XML →
Convert JSON to XML and back, with automatic root-element wrapping.
XML to JSON →
Convert XML — SOAP responses, RSS feeds, legacy exports — into JSON, keeping attributes and reporting parse errors.
Articles associés
Qu'est-ce que JSON ? Le guide complet pour débutants →
JSON (JavaScript Object Notation) est un format d'échange de données léger, facile à lire pour les humains et à analyser pour les machines. Apprenez la syntaxe, les types de données et la structure qui font tourner les API modernes.
L'histoire de JSON : de 2000 au standard de l'industrie →
Suivez JSON depuis l'idée de Douglas Crockford en 2001, en passant par son adoption par Yahoo, jusqu'à devenir le standard ECMA-404 qui fait tourner 90 % des API modernes.
Le guide complet de JSON Schema (Draft 7) →
JSON Schema est le standard pour décrire et valider la structure JSON. Apprenez les mots-clés essentiels, construisez un véritable schéma d'API et appliquez les bonnes pratiques.