Aller au contenu
Allin

Comment convertir du JSON en CSV : aplatir des tableaux d'objets en lignes et colonnes

Publié le 18/06/2025 · 4 min de lecture · Outils pour développeurs

Daniel Okonkwo

Daniel OkonkwoDéveloppeur front-end et rédacteur Tech chez Allin

Performance web · Formats de fichiers

Vérifié à partir de 2 sources

Voir le profil
En bref

Pour convertir du JSON en CSV, pars d'un tableau d'objets. Rassemble l'union de toutes les clés pour former la ligne d'en-tête, puis écris une ligne par objet en lisant chaque champ dans l'ordre des en-têtes. Échappe toute valeur contenant une virgule, un guillemet double ou un saut de ligne en l'entourant de guillemets doubles et en doublant les guillemets internes. Les objets et tableaux imbriqués doivent d'abord être aplatis en colonnes à notation par point, comme address.city.

Un guide pratique pour transformer un tableau JSON d'objets en fichier CSV propre, avec l'aplatissement des champs imbriqués et la gestion des cas limites.

Pourquoi la forme de ton JSON compte

Le CSV est un format plat en deux dimensions : des lignes et des colonnes, rien de plus. Le JSON est un arbre qui peut imbriquer des objets dans des objets et des tableaux dans des tableaux. Le cas idéal pour la conversion est un tableau d'objets au premier niveau, où chaque objet devient une ligne et chaque clé une colonne. Tout ce qui est plus profond doit être remodelé avant de tenir dans une grille.

Comme des objets différents peuvent porter des clés différentes, la ligne d'en-tête doit être l'union de toutes les clés rencontrées, pas seulement celles du premier objet. Si tu ne lis que le premier enregistrement, les colonnes suivantes disparaissent silencieusement et le fichier se désaligne.

Aplatir les objets et tableaux imbriqués

L'astuce classique est la notation par point. Un objet comme {"address":{"city":"Lagos"}} devient une colonne nommée address.city contenant la valeur Lagos. L'imbrication peut être aussi profonde que voulu : user.address.city est parfaitement valide. Les tableaux sont indexés par position, donc tags contenant ["api","web"] devient deux colonnes, tags.0 et tags.1.

L'aplatissement fonctionne bien quand les tableaux sont courts et de longueur fixe. Quand un tableau peut grandir, les colonnes indexées explosent : un enregistrement à cinquante étiquettes produit cinquante colonnes. Dans ce cas, il est souvent plus propre de conserver le tableau comme une seule chaîne jointe, comme "api;web;csv", ou de scinder les données dans une seconde table liée.

Les cas limites qui cassent les convertisseurs naïfs

L'échec le plus courant concerne l'échappement. Si une valeur contient le séparateur (souvent une virgule), un guillemet double ou un saut de ligne, elle doit être entourée de guillemets doubles, et tout guillemet double interne doit être doublé. Ainsi la valeur She said "hi" devient "She said ""hi""". L'ignorer corrompt toutes les lignes suivantes.

Autres pièges : null contre chaîne vide (les deux donnent en général une cellule vide), booléens et nombres qu'un tableur peut réinterpréter (un code à zéro initial comme 007 peut perdre ses zéros), et l'encodage. Écris toujours en UTF-8, et envisage une marque d'ordre des octets initiale si le fichier doit s'ouvrir proprement dans d'anciens tableurs.

Convertisseur JSON vers CSVTransforme un tableau JSON d'objets en valeurs séparées par des virgules avec une ligne d'en-tête. Accepte un fichier entier, pour qu'un long journal n'ait pas à passer par le presse-papiers.Essayer l'outil

Questions fréquentes

Que faire si mon JSON est un objet unique, pas un tableau ?
Place-le dans un tableau pour obtenir un CSV d'une ligne. Si tu préfères chaque clé sur sa propre ligne, transpose-le en deux colonnes clé,valeur.
Quel séparateur utiliser, virgule ou point-virgule ?
La virgule est le séparateur par défaut du standard CSV. Certains réglages régionaux de tableur attendent un point-virgule ; si tes valeurs contiennent déjà des virgules, un point-virgule ou une tabulation réduit l'échappement.
Comment empêcher les zéros initiaux de disparaître ?
Les zéros sont bien dans le fichier CSV ; c'est le tableur qui les supprime en traitant la colonne comme un nombre. Importe la colonne en tant que texte, sinon le tableur la reformatera à l'ouverture.
Puis-je reconvertir le CSV en JSON à l'identique ?
En partie. Les colonnes plates se reconvertissent proprement, mais les clés à notation par point doivent être ré-imbriquées et le CSV perd les types : nombres et booléens reviennent en chaînes tant que tu ne les réanalyses pas.

Articles qui pourraient t'intéresser

Tous les guides
ExplicationcamelCase vs snake_case : guide des conventions de nommage dans le codecamelCase, snake_case, PascalCase et kebab-case expliqués : à quoi chacun ressemble, où c'est la convention, et comment en choisir un de façon cohérente.ExplicationCSV vers JSON : les cinq cas qui cassent tous les convertisseursDélimiteurs entre guillemets, sauts de ligne intégrés, types ambigus, en-têtes en double et encodage. Chaque cas a été passé dans le convertisseur et la sortie exacte est reproduite ici — y compris les deux qu'il ne rattrape pas.ExplicationXML vers JSON : attributs, répétition et le piège du tableau à un seul élémentDeux documents qui ne diffèrent que par le nombre d'enfants produisent deux formes JSON différentes, et aucun convertisseur ne peut les distinguer sans schéma. Plus ce que celui-ci fait réellement des attributs, du contenu mixte et des espaces — et la seule chose qu'il ne sait toujours pas consigner.ComparatifJSON vs XML : quelle différence ?JSON et XML stockent tous deux des données structurées en texte, mais avec des compromis différents. Voici à quoi ressemble chacun, où chacun l'emporte et comment choisir.ExplicationJSON vers CSV quand la structure est imbriquée : pourquoi il n'y a pas de bonne réponseLes deux mêmes commandes ressortent sur cinq colonnes d'un convertisseur et dix d'un autre, et aucun n'a tort. Chemins pointés, tableaux de scalaires, tableaux d'objets et enregistrements aux clés différentes : quatre décisions, prises à ta place, le plus souvent en silence.ExplicationÉchapper une chaîne pour JSON : trois caractères sont obligatoires, et un seul est un piègeLa RFC 8259 n'impose l'échappement que de trois choses dans une chaîne JSON. Tout le reste est facultatif. Celle qui casse réellement les chaînes de traitement est le demi-surrogate isolé : légal dans un texte JSON, impossible en UTF-8, et remplacé en silence dès que tes données sont écrites.

Outils similaires

Sources

Tu as repéré une erreur dans cet article ?