CSV vs JSON vs XML : Choisir le Bon Format de Données
Chaque échange de données nécessite de choisir un format. CSV, JSON et XML sont les trois options les plus courantes, chacune avec des forces distinctes. Choisir le mauvais format entraîne des maux de tête d'analyse, des charges utiles gonflées et du temps de développement gaspillé. Ce guide vous aide à choisir le bon outil pour le travail.
Aperçu des Formats
CSV (Comma-Separated Values)
name,age,city
Alice,30,London
Bob,25,Paris
Charlie,35,Tokyo
- Structure : Plate, tabulaire (lignes et colonnes)
- Système de types : Aucun (tout est du texte)
- Imbrication : Non supportée
- Taille : La plus petite pour les données tabulaires
JSON (JavaScript Object Notation)
[
{"name": "Alice", "age": 30, "city": "London"},
{"name": "Bob", "age": 25, "city": "Paris"},
{"name": "Charlie", "age": 35, "city": "Tokyo"}
]
- Structure : Hiérarchique (objets, tableaux)
- Système de types : String, number, boolean, null, object, array
- Imbrication : Support natif
- Taille : Modérée
XML (eXtensible Markup Language)
<people>
<person>
<name>Alice</name>
<age>30</age>
<city>London</city>
</person>
<person>
<name>Bob</name>
<age>25</age>
<city>Paris</city>
</person>
</people>
- Structure : Hiérarchique avec attributs et éléments
- Système de types : Via XML Schema (XSD)
- Imbrication : Support natif
- Taille : La plus grande (balises verbeuses)
Comparaison Détaillée
| Caractéristique | CSV | JSON | XML |
|---|---|---|---|
| Lisibilité | Élevée (tabulaire) | Élevée | Faible (verbeux) |
| Taille de fichier | Plus petite | Moyenne | Plus grande |
| Vitesse d'analyse | Plus rapide | Rapide | Plus lente |
| Imbrication | Non | Oui | Oui |
| Schéma | Pas de standard | JSON Schema | XSD, DTD |
| Commentaires | Non | Non | Oui |
| Métadonnées | Non | Non | Oui (attributs) |
| Streaming | Ligne par ligne | SAX/streaming | SAX/StAX |
| Données binaires | Non | Chaîne Base64 | Base64 ou CDATA |
| Espaces de noms | Non | Non | Oui |
Quand Utiliser CSV
Idéal pour :
- Données de feuilles de calcul et exports de bases de données
- Analyse de données (pandas, R, Excel)
- Données plates simples avec des colonnes cohérentes
- Compatibilité maximale (chaque outil supporte CSV)
- Grands ensembles de données où la taille compte
À éviter quand :
- Les données ont une structure imbriquée ou hiérarchique
- Plusieurs types de données doivent être préservés
- Les valeurs des colonnes contiennent des virgules, retours à la ligne ou guillemets (cas limites)
Travaillez avec les données CSV en utilisant notre Éditeur CSV ou convertissez en JSON avec notre convertisseur CSV vers JSON.
Quand Utiliser JSON
Idéal pour :
- Communication API web (REST, réponses GraphQL)
- Fichiers de configuration (package.json, tsconfig.json)
- Bases de données orientées documents (MongoDB, CouchDB)
- Environnements navigateur (analyse JavaScript native)
- Données à structure variable (certains enregistrements ont des champs que d'autres n'ont pas)
À éviter quand :
- Les données sont purement tabulaires (CSV est plus simple et plus petit)
- Vous avez besoin de fonctionnalités XML (espaces de noms, schémas, XSLT)
- Vous avez besoin de commentaires dans vos fichiers de données (utilisez YAML à la place)
Formatez et validez JSON avec notre Formateur JSON.
Quand Utiliser XML
Idéal pour :
- Systèmes d'entreprise (SOAP, XHTML, RSS, SVG)
- Balisage de documents (contenu mixte — texte avec structure intégrée)
- Quand vous avez besoin d'attributs en plus des éléments
- Exigences de validation de schéma strictes (XSD)
- Transformations XSLT
- Standards spécifiques à l'industrie (santé HL7, finance XBRL)
À éviter quand :
- Vous construisez des APIs web modernes (JSON est le standard)
- Les données sont tabulaires (CSV est plus simple)
- La taille de fichier et la vitesse d'analyse comptent (JSON est plus léger)
Comparaison de Taille
Le même ensemble de données de 1000 enregistrements :
| Format | Taille du Fichier | Temps d'Analyse (relatif) |
|---|---|---|
| CSV | 45 Ko | 1x (référence) |
| JSON | 85 Ko | 1,5x |
| XML | 140 Ko | 3x |
La verbosité de XML — balises ouvrantes, balises fermantes et noms d'éléments répétés pour chaque valeur — triple approximativement la taille par rapport au CSV.
Modèles de Migration
CSV vers JSON
import csv, json
with open('data.csv') as f:
reader = csv.DictReader(f)
data = list(reader)
with open('data.json', 'w') as f:
json.dump(data, f, indent=2)
JSON vers CSV
import csv, json
with open('data.json') as f:
data = json.load(f)
with open('data.csv', 'w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=data[0].keys())
writer.writeheader()
writer.writerows(data)
XML vers JSON
import xmltodict, json
with open('data.xml') as f:
data = xmltodict.parse(f.read())
with open('data.json', 'w') as f:
json.dump(data, f, indent=2)
Le Paysage Moderne
La tendance de la dernière décennie est claire : JSON a largement remplacé XML pour les APIs web et la configuration. Cependant, CSV reste dominant pour l'échange de données dans les contextes d'analyse et d'entreprise, et XML persiste dans les systèmes d'entreprise et gouvernementaux.
Alternatives plus récentes :
- YAML : Configuration conviviale (remplace à la fois JSON et XML pour les configs)
- Protocol Buffers / MessagePack : Formats binaires pour les systèmes haute performance
- Parquet / Arrow : Formats en colonnes pour l'analyse de données massives
Pour une comparaison spécifique entre JSON et YAML, consultez notre guide YAML vs JSON.
FAQ
Puis-je convertir entre ces formats sans perte de données ?
CSV vers JSON est sans perte pour les données plates (bien que les types soient perdus — les nombres deviennent des chaînes en CSV). JSON vers CSV perd la structure hiérarchique (les objets imbriqués doivent être aplatis). XML vers JSON est majoritairement sans perte, mais les attributs et le contenu mixte peuvent être délicats. Testez toujours la conversion aller-retour avec vos données spécifiques.
Quel format dois-je utiliser pour ma nouvelle API ?
JSON. C'est le standard de facto pour les APIs web modernes, avec un support natif dans les navigateurs, un excellent outillage et le meilleur équilibre entre lisibilité et taille. Utilisez JSON Schema pour la validation. La seule exception est si vous vous intégrez à des systèmes d'entreprise existants qui nécessitent XML.
Ressources Connexes
- Éditeur CSV — Éditez et nettoyez les données CSV
- Formateur JSON — Formatez et validez JSON
- Guide de Conversion CSV vers JSON — Conversion étape par étape