Convertir un JSON en CSV
Transformez un tableau JSON d’objets en CSV ouvrable dans Excel. Les colonnes sont déduites des clés, les valeurs correctement échappées.
Ce qui se perd en passant du JSON au CSV
Le JSON décrit une structure : des types (nombre, booléen, null), des objets dans des objets, des listes de longueur variable. Le CSV, lui, n’est qu’une grille : des lignes, des colonnes, du texte. La conversion est donc une mise à plat, et trois décisions doivent être prises :
- Les types disparaissent.
29et"29"deviennent la même cellule. C’est au logiciel qui lira le fichier de deviner — parfois mal. - Les valeurs complexes (objet ou tableau) ne tiennent pas dans une cellule : elles sont recopiées sous forme JSON, ou réparties en colonnes avec l’option d’aplatissement.
- Les clés absentes d’un objet donnent une cellule vide, afin que toutes les lignes aient le même nombre de colonnes.
Comment les colonnes sont détectées
L’outil parcourt tous les objets du tableau et retient chaque clé rencontrée, dans son ordre d’apparition. Un tableau dont les objets n’ont pas exactement les mêmes clés produit donc une grille complète, avec des cellules vides là où la donnée manquait. Si vous collez un objet unique au lieu d’un tableau, il est traité comme une seule ligne ; si vous collez une réponse d’API du type {"resultats":[…]}, le premier tableau trouvé est utilisé. Pour vérifier la structure avant conversion, passez par le formateur JSON, qui signale les erreurs de syntaxe avec leur position.
L’échappement CSV tient en trois règles
Le format est simple mais strict. Une valeur doit être entourée de guillemets doubles dès qu’elle contient le séparateur, un guillemet ou un retour à la ligne ; à l’intérieur, chaque guillemet est doublé.
| Valeur d’origine | Cellule CSV |
|---|---|
| Lyon | Lyon |
| Paris, France | "Paris, France" |
| Il a dit "bonjour" | "Il a dit ""bonjour""" |
| Deux lignes | "Deux↵lignes" |
C’est exactement la convention inverse de celle qu’applique l’outil CSV en JSON : les deux conversions sont réversibles l’une de l’autre.
Ouvrir le résultat dans Excel
Deux pièges se cumulent dans la version française d’Excel. Le premier est le séparateur : Excel attend un point-virgule, parce que la virgule sert de séparateur décimal. Un double-clic sur un CSV à virgules empile donc toute la ligne dans la première colonne — activez l’option point-virgule pour l’éviter.
Le second est l’encodage : Excel n’ouvre pas spontanément un fichier en UTF-8, et les accents deviennent alors des suites de caractères étranges. Deux solutions fiables : passer par Données → Obtenir des données → À partir d’un fichier texte en choisissant UTF-8, ou enregistrer le fichier en « CSV UTF-8 » depuis Excel lui-même. Le copier-coller direct dans une feuille reste la méthode la plus simple pour un petit tableau.
Objets imbriqués et listes
L’option d’aplatissement transforme {"client":{"ville":"Lyon"}} en une colonne client.ville. La notation pointée est celle qu’emploient la plupart des outils d’import, et elle reste lisible pour un humain. Les tableaux ne sont pas aplatis : une liste de taille variable ne peut pas devenir un nombre fixe de colonnes sans inventer une structure. Ils sont donc conservés en notation JSON dans la cellule, à vous de décider ensuite s’il faut les éclater en plusieurs lignes.
La conversion est entièrement réalisée dans votre navigateur. C’est un point important quand le JSON vient d’une API : une réponse contient souvent des adresses, des identifiants clients ou un jeton, données qu’il n’est pas souhaitable d’envoyer à un service tiers pour une simple mise en forme. Si votre export contient des lignes en double, l’outil supprimer les doublons les élimine avant import.
Questions fréquentes
Excel met toute la ligne dans une seule colonne
C’est le séparateur : la version française attend un point-virgule. Activez l’option correspondante, ou utilisez Données → Convertir pour indiquer la virgule. Autre solution employée par certains exports : ajouter une première ligne contenant sep=,, qu’Excel interprète comme une consigne.
Mon JSON est un objet, pas un tableau : que faire ?
Rien de spécial. Un objet isolé est converti en une ligne unique, et si l’objet contient un tableau — cas d’une réponse d’API enveloppée dans une clé data ou results — c’est ce tableau qui est converti. Pour choisir un autre tableau, isolez-le dans le JSON avant de le coller.
Comment conserver les zéros d’un code postal ?
Le CSV produit conserve fidèlement 01000 : c’est Excel qui supprime le zéro en convertissant la cellule en nombre. Passez par l’assistant d’importation et déclarez la colonne en « Texte », ou préfixez la valeur d’une apostrophe dans la feuille. Le même problème touche les numéros de téléphone et les références produit.
Les cellules gardent-elles les retours à la ligne ?
Oui : une valeur multiligne est entourée de guillemets et ses retours à la ligne sont préservés, comme le prévoit le format. Les tableurs les affichent correctement. En revanche, certains scripts maison qui découpent le fichier ligne par ligne s’y cassent les dents ; c’est la principale source de CSV mal lus.