CSV ou JSON : quand utiliser chacun et à quoi faire attention lors de la conversion
Envoyer un export de tableur à une API ou ouvrir une réponse d'API dans Excel suppose de convertir entre CSV et JSON. Connaître les différences entre les formats évite d'abîmer les données en chemin.
Tableau contre arbre
Le CSV (Comma-Separated Values) est un tableau. La première ligne contient les noms de colonnes et chaque ligne suivante est un enregistrement, avec des valeurs séparées par des virgules. C'est la façon la plus simple et la plus légère de stocker des données plates où chaque ligne a les mêmes colonnes.
Le JSON est un arbre. Les objets peuvent contenir des tableaux qui contiennent d'autres objets, de sorte que des données hiérarchiques comme « une commande avec plusieurs articles » s'expriment naturellement. Le prix à payer est la taille, car les noms de clés se répètent à chaque enregistrement.
name,city,score
Kim,Seoul,92
Lee,Busan,85
[
{"name": "Kim", "city": "Seoul", "score": 92},
{"name": "Lee", "city": "Busan", "score": 85}
]
Lequel utiliser
L'absence de types en CSV a des conséquences. Enregistrez le code postal 01234 dans un CSV et Excel peut le lire comme un nombre et supprimer le zéro initial ; de longs numéros de carte ou de commande peuvent se transformer en notation scientifique comme 1,23E+15.
- Données que des personnes ouvriront ou modifieront dans Excel ou Google Sheets : CSV.
- Des centaines de milliers de lignes de journaux ou de statistiques simples : CSV (léger et facile à traiter ligne par ligne).
- Requêtes et réponses d'API web : JSON.
- Données hiérarchiques avec des listes dans les enregistrements : JSON.
- Quand il faut distinguer nombres, booléens et null : JSON (en CSV, tout est du texte).
Virgules et guillemets : les règles d'échappement du CSV
Et si une valeur contient une virgule ? La RFC 4180 prévoit de l'entourer de guillemets doubles : "Paris, France". Un guillemet double dans une valeur s'échappe en le doublant, si bien que He said "hi" devient "He said ""hi""". Les sauts de ligne sont autorisés dans une valeur entre guillemets.
Un code qui se contente d'appeler split(',') ignore ces règles, et les colonnes se décalent dès qu'apparaît une colonne d'adresse ou de remarques. Traitez toujours le CSV avec un analyseur ou un convertisseur conforme à la norme.
Pourquoi Excel affiche mal les accents
Double-cliquer sur un CSV en UTF-8 dans Excel sous Windows affiche souvent des accents ou des caractères asiatiques illisibles (é devient é). Sans marque d'ordre des octets (BOM) UTF-8, Excel devine et se rabat sur l'ancien encodage du système.
Enregistrez le fichier en UTF-8 avec BOM, ou utilisez Données → À partir d'un fichier texte/CSV dans Excel en choisissant explicitement UTF-8. À l'inverse, quand un programme lit un fichier avec BOM, vérifiez qu'un caractère invisible n'a pas été ajouté devant le premier nom de colonne.
Aplatir un JSON imbriqué en CSV
Transformer un arbre en tableau nécessite une convention. Une convention courante relie le chemin par des points : {"user": {"name": "Kim"}} devient une colonne user.name.
Les tableaux sont plus délicats. Si une commande comporte trois articles, vous pouvez créer trois lignes ou stocker les articles sous forme de chaîne JSON dans une seule colonne. Les lignes supplémentaires conviennent à l'analyse ; une colonne de chaîne JSON convient à la préservation de l'original.
Liste de contrôle avant de convertir
Convertissez avec le convertisseur CSV ↔ JSON d'AIBIZAP, puis inspectez la structure dans le formateur JSON pour repérer les erreurs tôt.
- Vérifiez que la première ligne est un en-tête et que le séparateur est bien une virgule (le point-virgule est très courant en France, la tabulation aussi).
- Conservez sous forme de chaînes les codes dont les zéros initiaux ont un sens.
- Supprimez d'abord les espaces autour des cellules et les lignes vides ; l'outil de suppression des espaces aide.
- Vérifiez que le nombre de lignes après conversion correspond à l'original. Un écart signale généralement un problème de guillemets ou de sauts de ligne.