Que vous configuriez une application web, échangiez des données entre services, analysiez un export de tableur ou lisiez la réponse d'une API, vous rencontrerez des données stockées dans des formats texte structurés. Les quatre plus courants sont JSON, YAML, CSV et XML.
Chaque format a été conçu avec des objectifs différents, et le bon choix dépend de votre cas d'usage. Cet article explique ce qu'est chaque format, à quoi il ressemble, quand l'utiliser et comment ils se comparent.
JSON — JavaScript Object Notation
Le JSON est devenu le format d'échange de données dominant sur le web. Malgré son nom, il est indépendant de tout langage et utilisé partout.
Exemple de syntaxe :
{
"nom": "Alice Martin",
"age": 34,
"competences": ["Python", "SQL", "Docker"],
"adresse": {
"ville": "Lyon",
"pays": "France"
}
}
Caractéristiques principales :
- Paires clé-valeur avec une syntaxe propre et lisible
- Supporte les chaînes, nombres, booléens, tableaux, objets et null
- Pas de commentaires autorisés dans le JSON standard
- Syntaxe stricte — les virgules finales et les guillemets simples sont des erreurs
Cas d'usage courants : API REST, fichiers de configuration (package.json, tsconfig.json), bases NoSQL (MongoDB), échange de données entre frontend et backend.
Bon à savoir. La syntaxe stricte du JSON est à la fois une force et une faiblesse. Elle rend l'analyse fiable et sans ambiguïté, mais signifie aussi qu'une seule virgule manquante ou en trop casse l'intégralité du fichier.
YAML — YAML Ain't Markup Language
Le YAML a été conçu pour être le format de sérialisation de données le plus lisible possible par un humain. Il utilise l'indentation au lieu des crochets et accolades, et il est particulièrement populaire pour les fichiers de configuration.
Exemple de syntaxe :
nom: Alice Martin
age: 34
competences:
- Python
- SQL
- Docker
adresse:
ville: Lyon
pays: France
Caractéristiques principales :
- Structure basée sur l'indentation (pas de crochets ni d'accolades)
- Supporte les commentaires avec
# - Supporte tous les types de données JSON et plus encore (dates, chaînes multilignes)
- Sensible aux espaces — une indentation incorrecte casse le fichier
Cas d'usage courants : Fichiers Docker Compose, manifestes Kubernetes, pipelines CI/CD (GitHub Actions, GitLab CI), playbooks Ansible, configuration Hugo/Jekyll.
Le YAML est un surensemble du JSON, ce qui signifie que tout document JSON valide est aussi du YAML valide. Cependant, la flexibilité du YAML peut être à double tranchant — sa conversion de type implicite (par exemple, yes interprété comme le booléen true, ou 3.10 devenant 3.1) a causé de nombreux bugs subtils.
CSV — Comma-Separated Values
Le CSV est le format de données structurées le plus simple. Il stocke des données tabulaires en texte brut, chaque ligne étant un enregistrement et les valeurs séparées par des virgules (ou parfois des points-virgules, des tabulations ou d'autres délimiteurs).
Exemple de syntaxe :
nom,age,ville,pays
Alice Martin,34,Lyon,France
Bob Dupont,28,Paris,France
Carol Smith,41,Londres,Royaume-Uni
Caractéristiques principales :
- Extrêmement simple — juste du texte avec des délimiteurs
- Pas de types de données — tout est une chaîne de caractères
- Pas de moyen standard pour représenter des données imbriquées
- Pas de standard universel officiel (RFC 4180 existe mais n'est pas universellement suivi)
- Les fichiers sont très légers
Cas d'usage courants : Exports de tableurs, imports/exports de bases de données, analyse de données (pandas, R), échange de données simple, fichiers de logs.
La simplicité du CSV est sa plus grande force et sa plus grande limitation. Il est parfait pour les données tabulaires plates mais ne peut pas représenter des structures hiérarchiques. Les cas particuliers (virgules dans les valeurs, champs multilignes, problèmes d'encodage) rendent l'analyse plus complexe qu'il n'y paraît.
XML — Extensible Markup Language
Le XML était le format d'échange de données dominant avant que le JSON ne prenne le relais. Il utilise une syntaxe à balises similaire au HTML et supporte des fonctionnalités avancées comme les schémas, les espaces de noms et les transformations.
Exemple de syntaxe :
<?xml version="1.0" encoding="UTF-8"?>
<personne>
<nom>Alice Martin</nom>
<age>34</age>
<competences>
<competence>Python</competence>
<competence>SQL</competence>
<competence>Docker</competence>
</competences>
<adresse>
<ville>Lyon</ville>
<pays>France</pays>
</adresse>
</personne>
Caractéristiques principales :
- Structure à balises avec balises ouvrantes et fermantes
- Supporte les attributs, espaces de noms, schémas (XSD) et transformations (XSLT)
- Supporte les commentaires
- Très verbeux comparé aux autres formats
- Standard extrêmement bien défini avec validation stricte
Cas d'usage courants : Services web SOAP, intégrations d'entreprise, formats de documents (DOCX, SVG, RSS), fichiers de configuration dans les écosystèmes Java/.NET, échange de données gouvernementales et financières.
Le XML est plus verbeux que le JSON ou le YAML, mais ses capacités de validation par schéma le rendent indispensable dans les contextes où l'intégrité des données et les contrats formels entre systèmes sont critiques.
Comparaison côte à côte
| Caractéristique | JSON | YAML | CSV | XML |
|---|---|---|---|---|
| Lisibilité | Bonne | Excellente | Bonne (tabulaire) | Moyenne |
| Verbosité | Faible | Faible | Très faible | Élevée |
| Commentaires | Non | Oui | Non | Oui |
| Données imbriquées | Oui | Oui | Non | Oui |
| Types de données | Basiques | Riches | Aucun (tout est texte) | Via schéma |
| Validation par schéma | JSON Schema | Pas de standard | Non | XSD |
| Taille de fichier | Petite | Petite | Très petite | Grande |
| Vitesse d'analyse | Rapide | Modérée | Rapide | Modérée |
| Domaine principal | API web | Config DevOps | Données/tableurs | Entreprise |
Quel format choisir ?
- Choisissez JSON pour les API web, le stockage de configuration pour les projets JavaScript/TypeScript ou l'échange de données entre services. C'est le choix par défaut pour la plupart des applications modernes.
- Choisissez YAML pour les fichiers de configuration que des humains liront et modifieront fréquemment. Sa lisibilité et le support des commentaires le rendent idéal pour le DevOps et l'infrastructure-as-code.
- Choisissez CSV pour les données tabulaires, les imports/exports depuis des tableurs ou bases de données, ou quand la taille du fichier doit être minimale. Évitez-le pour tout ce qui est hiérarchique.
- Choisissez XML pour les systèmes d'entreprise, les API SOAP ou les contextes nécessitant une validation formelle par schéma. C'est aussi le bon choix pour le balisage orienté document (comme SVG ou RSS).
Convertir entre formats
La conversion entre ces formats est une tâche courante. Quelques points à garder en tête :
- JSON vers YAML (et vice versa) est généralement sans perte puisque le YAML est un surensemble du JSON.
- CSV vers JSON/YAML fonctionne bien pour les données plates mais nécessite des décisions de structuration pour une sortie imbriquée.
- XML vers JSON peut perdre des informations (attributs, espaces de noms, ordre) car le JSON n'a pas de concepts équivalents.
- N'importe quel format vers CSV ne fonctionne que si les données sont plates ou peuvent être significativement aplaties.
Astuce. Lors de la conversion entre formats, vérifiez toujours le résultat. Les conversions automatiques peuvent silencieusement perdre des données, notamment avec les attributs XML, la conversion de type YAML ou les cas particuliers d'encodage CSV.
Pour aller plus loin
ToolK.io propose des outils gratuits pour convertir entre JSON, YAML, CSV et XML, formater et valider vos données, et des tutoriels associés pour travailler avec les données structurées dans vos projets.