Pourquoi convertir un CSV en JSON ?
CSV et JSON sont deux des formats de données les plus courants en développement logiciel. Mais ils servent des objectifs très différents.
CSV (Comma-Separated Values) représente des données tabulaires plates — lignes et colonnes, comme un tableur. Il est simple, compact et universellement supporté par Excel, Google Sheets, les bases de données et les outils d'analyse.
JSON (JavaScript Object Notation) représente des données structurées et hiérarchiques — des objets avec des clés et des valeurs, des tableaux et des structures imbriquées. C'est le format standard pour les API, les fichiers de configuration et les applications web modernes.
À un moment donné, chaque développeur doit convertir entre ces deux formats. Peut-être avez-vous exporté des données d'une base de données en CSV et devez les envoyer à une API qui attend du JSON. Peut-être avez-vous reçu un tableur d'un client et devez le traiter programmatiquement.
Ce guide couvre tout ce que vous devez savoir pour convertir correctement un CSV en JSON.
La conversion de base
Un fichier CSV simple :
name,age,city
Alice,30,Paris
Bob,25,London
Charlie,35,Berlin
Se convertit en ce JSON :
[
{ "name": "Alice", "age": "30", "city": "Paris" },
{ "name": "Bob", "age": "25", "city": "London" },
{ "name": "Charlie", "age": "35", "city": "Berlin" }
]
La première ligne devient les clés (noms de propriétés). Chaque ligne suivante devient un objet dans un tableau JSON.
Cela semble simple, mais les fichiers CSV du monde réel sont rarement aussi propres.
Les pièges courants
1. Tout est une chaîne de caractères
Remarquez que "age": "30" est une chaîne, pas un nombre. CSV n'a pas de système de types. Chaque valeur est du texte. Lors de la conversion en JSON, vous devez décider :
- Est-ce que
"30"doit devenir le nombre30? - Est-ce que
"true"doit devenir le booléentrue? - Est-ce que
""doit devenirnull?
Un convertisseur naïf garde tout en chaînes. Un convertisseur intelligent détecte et convertit les types automatiquement.
2. Les virgules à l'intérieur des valeurs
Que se passe-t-il quand une valeur contient une virgule ?
name,description,city
Alice,"Loves coding, hiking",Paris
La valeur Loves coding, hiking est entourée de guillemets pour empêcher la virgule d'être traitée comme un délimiteur. Votre parseur doit gérer correctement les champs entre guillemets, sinon il divisera cette ligne en un mauvais nombre de colonnes.
3. Les sauts de ligne à l'intérieur des valeurs
CSV autorise les sauts de ligne dans les champs entre guillemets :
name,bio
Alice,"Software engineer.
Loves open source."
C'est un CSV valide. La bio s'étend sur deux lignes mais constitue un seul champ. Beaucoup de parseurs simples échouent sur ce cas.
4. Les différents délimiteurs
Tous les fichiers "CSV" n'utilisent pas des virgules. Alternatives courantes :
| Délimiteur | Nom | Courant dans |
|---|---|---|
| , | Virgule | US, UK, la plupart des logiciels |
| ; | Point-virgule | France, Allemagne, Excel EU |
| \t | Tabulation | Fichiers TSV, exports de bases de données |
| \| | Pipe | Systèmes legacy |
Si vous ouvrez un export Excel européen en vous attendant à des virgules, vous obtiendrez un résultat incohérent. Vérifiez toujours le délimiteur réel avant de parser.
5. Les problèmes d'encodage
Les fichiers CSV peuvent être encodés en :
- UTF-8 (standard moderne)
- UTF-8 avec BOM (défaut d'Excel sous Windows)
- Latin-1 / ISO-8859-1 (anciens fichiers européens)
- Windows-1252 (ancien Windows)
Si votre parseur suppose UTF-8 mais que le fichier est en Latin-1, les caractères spéciaux comme é, ñ ou ü seront corrompus.
6. Colonnes manquantes ou en trop
Les fichiers CSV réels ont souvent :
- des lignes avec moins de colonnes que l'en-tête
- des lignes avec plus de colonnes que l'en-tête
- des lignes complètement vides
- des virgules en fin de ligne créant des colonnes fantômes
Votre convertisseur doit gérer tout cela proprement.
Convertir CSV en JSON en JavaScript
Voici un convertisseur basique :
function csvToJson(csv) {
const lines = csv.trim().split('\n');
const headers = lines[0].split(',');
return lines.slice(1).map(line => {
const values = line.split(',');
const obj = {};
headers.forEach((header, i) => {
obj[header.trim()] = values[i]?.trim() || '';
});
return obj;
});
}
Cela fonctionne pour du CSV simple mais échoue sur :
- les champs entre guillemets avec des virgules
- les sauts de ligne à l'intérieur des valeurs
- les délimiteurs point-virgule
- les problèmes d'encodage
Pour une utilisation en production, utilisez une bibliothèque de parsing appropriée ou un outil qui gère ces cas limites.
Convertir CSV en JSON en Python
import csv
import json
with open('data.csv', 'r') as f:
reader = csv.DictReader(f)
data = list(reader)
with open('data.json', 'w') as f:
json.dump(data, f, indent=2)
Le module csv.DictReader intégré à Python gère les champs entre guillemets, les différents délimiteurs et la plupart des cas limites correctement. C'est l'approche recommandée pour les développeurs Python.
JSON vers CSV (L'inverse)
Convertir du JSON en CSV est plus délicat car JSON peut être imbriqué :
{
"name": "Alice",
"address": {
"city": "Paris",
"country": "France"
}
}
Comment aplatir address.city et address.country en colonnes CSV ? Approches courantes :
- Notation par points : les colonnes deviennent
address.city,address.country - Aplatissement : remonter les valeurs imbriquées au niveau supérieur
- Ignorer : sauter complètement les objets imbriqués
Il n'y a pas de standard universel. Votre approche dépend de votre cas d'utilisation.
Quand utiliser CSV vs JSON
| Cas d'utilisation | Meilleur format | |---|---| | Données de tableur | CSV | | Requêtes et réponses d'API | JSON | | Exports de base de données pour analyse | CSV | | Fichiers de configuration | JSON | | Partager des données avec des non-développeurs | CSV | | Partager des données entre services | JSON | | Grands ensembles de données (millions de lignes) | CSV (taille de fichier plus petite) | | Structures imbriquées complexes | JSON |
Convertir en toute sécurité
Lors de la conversion de données sensibles (dossiers clients, données financières, données métier internes), soyez prudent quant à l'endroit où la conversion se produit.
De nombreux convertisseurs CSV-vers-JSON en ligne traitent vos données sur leurs serveurs. Vous téléchargez un fichier, leur serveur le parse et renvoie le résultat. Vos données ont maintenant été transmises et traitées par un tiers.
Si votre CSV contient des informations sensibles — noms, emails, chiffres financiers, données métier internes — utilisez un convertisseur qui fonctionne entièrement dans votre navigateur. Aucune donnée ne devrait quitter votre machine.
Le Convertisseur CSV vers JSON de FmtDev traite tout localement. Vos données ne quittent jamais votre navigateur.
Points clés à retenir
- CSV est plat, JSON est structuré — la conversion nécessite de mapper les colonnes vers des clés
- Attention aux virgules dans les valeurs, aux problèmes d'encodage et aux différents délimiteurs
- Toutes les valeurs CSV sont des chaînes — décidez comment gérer la conversion de types
- Le JSON imbriqué ne peut pas être directement représenté en CSV sans aplatissement
- Vérifiez toujours le délimiteur et l'encodage avant de parser
- Pour les données sensibles, convertissez localement — ne téléchargez jamais vers des outils en ligne