Json To Csv LogoJson To Csv

Comment convertir JSON en CSV dans VS Code ? 4 méthodes, du clic à la touche unique (Guide 2026)

VS Code ne propose aucune commande intégrée de conversion JSON vers CSV, mais il vous offre quatre voies honnêtes : une extension en un clic, le terminal intégré avec jq ou Python, une tâche tasks.json enregistrée, ou un convertisseur en ligne quand vous voulez zéro installation. Voici chacune d'elles, testée sur de vraies données imbriquées.

Mis à jour: 2026-10-1510 min de lecture

D'abord, le cadre honnête : VS Code est un éditeur, pas un convertisseur

Si vous avez fouillé les menus, vous n'avez rien manqué. VS Code n'a ni commande Convertir en CSV, ni menu Exporter pour JSON, ni moyen intégré de transformer un fichier .json en fichier .csv. Ce n'est pas un oubli : VS Code est un éditeur de code, et la conversion de format fait partie des tâches qu'il délègue aux extensions, au terminal et aux tâches. Une fois cela accepté, la question cesse d'être « où est le bouton ? » pour devenir « laquelle des quatre voies convient à ce fichier ? »

Les quatre voies, en bref : une extension pour convertir en un clic dans l'éditeur ; le terminal intégré pour un contrôle total avec jq ou Python ; une tâche tasks.json pour les conversions que vous répétez chaque semaine ; et un convertisseur en ligne pour les fichiers ponctuels où vous voulez zéro installation. Chacune est vraiment la meilleure pour une chose, et chacune a un mode d'échec que les autres évitent. Ce guide couvre les quatre, avec les commandes exactes et les sorties exactes qu'elles ont produites sur un vrai fichier de test imbriqué : un document JSON de trois commandes avec des objets client imbriqués, des listes d'articles et un total null.

Voie 1 : l'extension JSON2CSV (la plus rapide pour un seul fichier)

Pour un seul fichier à convertir tout de suite, une extension est la voie qui demande le moins d'effort. Celle à installer est JSON2CSV par khaeransori, sur la Marketplace de Visual Studio Code. Son README décrit le flux de travail simplement : installez-la, ouvrez un fichier JSON, ouvrez la Palette de commandes avec Ctrl+Shift+P (Cmd+Shift+P sur macOS), tapez Convert JSON to CSV, et le CSV converti s'ouvre dans un nouvel onglet de l'éditeur, où vous l'enregistrez avec Ctrl+S. Elle convertit aussi dans l'autre sens, de CSV vers JSON, depuis la même palette.

L'installation prend moins d'une minute : ouvrez la vue Extensions avec Ctrl+Shift+X, recherchez json2csv, et cliquez sur Installer sur l'entrée publiée par khaeransori. Deux habitudes rendent les installations d'extensions sûres en général, et elles s'appliquent ici comme partout : vérifiez que le nom de l'éditeur correspond avant de cliquer sur Installer (il existe des extensions copiées aux noms proches pour les outils populaires), et jetez un œil au nombre de téléchargements et à la date de la dernière mise à jour. Une extension exécute du code sur votre machine avec accès à vos fichiers, donc un instant de vérification de l'éditeur vaut plus que n'importe quelle liste de fonctionnalités.

Deux alternatives existent si JSON2CSV ne vous convient pas. DataMorph (répertorié sous le nom Data Format Converter) convertit entre CSV, JSON et Excel depuis le menu contextuel du clic droit ou la Palette de commandes, et annonce la conversion par lots de plusieurs fichiers à la fois ainsi qu'un aplatissement intelligent du JSON imbriqué. Algae Data est une option plus légère : ouvrez un fichier JSON, lancez Algae: JSON to CSV depuis la Palette de commandes, et le résultat s'ouvre dans une nouvelle fenêtre de l'éditeur. Les trois sont de vraies extensions de la Marketplace avec des fiches publiques ; choisissez celle dont la liste de fonctionnalités correspond à vos fichiers, pas celle dont la description est la plus tapageuse.

La limite honnête de la voie extension : vous confiez vos données à un outil tiers, et ses choix d'aplatissement lui appartiennent. Si votre JSON est profondément imbriqué ou si l'ordre de vos colonnes compte, les voies du terminal ci-dessous vous donnent un contrôle explicite sur les deux, et c'est pourquoi les développeurs qui convertissent du JSON chaque semaine finissent généralement sur la voie 2 ou 3.

Voie 2 : le terminal intégré, jq pour les données plates, Python pour les données imbriquées

Le terminal intégré est la superpuissance de VS Code pour ce travail : appuyez sur Ctrl+` (la touche accent grave) et vous disposez d'un shell complet dans l'éditeur, dans votre dossier de projet, avec votre fichier ouvert à côté. Pas de changement de fenêtre, pas d'envoi, et chaque commande ci-dessous est réexécutable. Deux outils couvrent presque tous les fichiers : jq pour les conversions plates rapides, et Python pour tout ce qui est imbriqué.

Commencez par jq, le processeur JSON en ligne de commande. Si votre JSON est un tableau d'objets plats, sans objets imbriqués, sans tableaux dans les lignes, une seule commande effectue toute la conversion. Elle collecte chaque clé de toutes les lignes comme en-tête, puis émet chaque ligne en CSV :

jq : tableau JSON plat vers CSV (vérifié)
jq -r '(map(keys) | add | unique) as $cols | $cols, (.[] | [.[$cols[]]] | @csv)' flat.json > flat.csv

Sur un fichier de test plat de deux commandes (id, name, total), cette commande a produit exactement ceci : une ligne d'en-tête id,name,total suivie de 1,"Ana",24.5 et 2,"Bo",9.0. Propre, correct et instantané. Mais essayez la même commande sur des données imbriquées et jq vous arrête honnêtement : sur notre fichier de test imbriqué de trois commandes, elle a échoué avec « object is not valid in a csv row », parce qu'un objet imbriqué comme customer n'a pas de cellule CSV unique où vivre. Cette erreur, c'est jq qui vous dit la vérité : les outils plats ont besoin de lignes plates.

Voie 2 : le terminal intégré, jq pour les données plates, Python pour les données imbriquées (suite)

Pour du JSON imbriqué, jq fonctionne toujours si vous nommez les colonnes explicitement. Cette recette extrait les champs voulus par chemin, joint la liste items en une seule cellule avec « ; », et écrit le CSV :

jq : JSON imbriqué avec colonnes explicites (vérifié)
jq -r '["id","name","city","items","total"], (.[] | [.id, .customer.name, .customer.city, (.items | join("; ")), .total]) | @csv' orders.json > orders.csv

Exécutée sur le fichier de test imbriqué, cette recette a produit un en-tête "id","name","city","items","total" et trois lignes, dont 1,"Ana","Oslo","book; pen",24.5 et 3,"Cy","Trondheim","", pour la commande avec une liste items vide et un total null. Notez deux comportements de jq à connaître : @csv met chaque chaîne entre guillemets (correct, même si bruyant), et null ne devient un champ vide que lorsqu'il atterrit dans un contexte de chaîne : la cellule items vide de la troisième ligne vient de join sur une liste vide, tandis que le total null s'est imprimé comme un champ vide en fin de ligne. Des colonnes explicites signifient un contrôle explicite : vous décidez de l'ordre des colonnes, des chemins d'imbrication, et de ce que chaque liste devient.

Voie 2 : le terminal intégré, jq pour les données plates, Python pour les données imbriquées (suite)

Quand nommer chaque colonne à la main devient fastidieux, Python est le meilleur outil. Enregistrez ce petit script sous le nom convert.py dans votre projet : il aplatit les objets imbriqués en colonnes à notation pointée (customer.name), joint les listes simples avec « ; », transforme null en cellule vide, et écrit un CSV correct avec le module csv standard qui gère les guillemets pour vous :

convert.py : script de conversion JSON vers CSV avec aplatissement (vérifié)
import json, csv, sys

def flatten(obj, prefix=""):
    out = {}
    if isinstance(obj, dict):
        for k, v in obj.items():
            key = f"{prefix}.{k}" if prefix else k
            out.update(flatten(v, key))
    elif isinstance(obj, list):
        out[prefix] = "; ".join(str(x) for x in obj if not isinstance(x, (dict, list))) if obj else ""
        for i, v in enumerate(obj):
            if isinstance(v, (dict, list)):
                out.update(flatten(v, f"{prefix}[{i}]"))
    else:
        out[prefix] = "" if obj is None else obj
    return out

rows = json.load(open(sys.argv[1]))
if isinstance(rows, dict):
    rows = [rows]
flat = [flatten(r) for r in rows]
cols = sorted({k for r in flat for k in r})
with open(sys.argv[2], "w", newline="", encoding="utf-8") as f:
    w = csv.DictWriter(f, fieldnames=cols)
    w.writeheader()
    w.writerows(flat)
print(f"wrote {sys.argv[2]}: {len(flat)} rows, {len(cols)} columns")

Exécutez-le depuis le terminal intégré avec python3 convert.py orders.json orders.csv. Sur le même fichier de test imbriqué, il a affiché « wrote orders.csv: 3 rows, 5 columns » et a produit customer.city,customer.name,id,items,total comme en-tête, avec les lignes Oslo,Ana,1,book; pen,24.5 / Bergen,Bo,2,mug,9.0 / Trondheim,Cy,3,, : le total null et la liste items vide atterrissant tous deux comme cellules vides, exactement comme les règles d'aplatissement le promettent. Le script gère les deux formes que les gens rencontrent vraiment : un tableau de niveau supérieur (le cas normal) et un seul objet de niveau supérieur (enveloppé dans un tableau d'une ligne). Les deux recettes jq et ce script ont été exécutés sur la machine de construction avant la publication, et les sorties ci-dessus sont leurs vraies sorties, pas des illustrations.

Voie 3 : enregistrez-la comme tâche, une touche, à chaque fois

Si vous convertissez des fichiers JSON plus d'une fois par mois, arrêtez de retaper des commandes et enregistrez la conversion comme tâche VS Code. Une tâche est une commande nommée dans .vscode/tasks.json, exécutable depuis Terminal > Exécuter la tâche ou avec le raccourci clavier Ctrl+Shift+B. Elle transforme la voie Python ci-dessus en opération à une touche sur le fichier que vous avez ouvert.

Créez .vscode/tasks.json dans votre projet avec ce contenu (le fichier a été vérifié comme JSON valide avant la publication) :

.vscode/tasks.json : convertir le fichier ouvert (analyse vérifiée)
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "JSON to CSV: convert current file",
      "type": "shell",
      "command": "python3 ${workspaceFolder}/convert.py ${file} ${fileDirname}/${fileBasenameNoExtension}.csv",
      "problemMatcher": []
    }
  ]
}

Fonctionnement : ${file} est le fichier ouvert dans votre éditeur actif, ${fileDirname} est son dossier, et ${fileBasenameNoExtension} est son nom sans .json : avec orders.json ouvert, la tâche exécute donc python3 convert.py dessus et écrit orders.csv à côté. Ouvrez n'importe quel fichier JSON, appuyez sur Ctrl+Shift+B, choisissez la tâche, et le CSV apparaît à côté du fichier source. Le même modèle fonctionne pour les recettes jq : remplacez la commande par la ligne jq et ${file} en entrée. Une mise en garde : les tâches exécutent des commandes shell avec vos permissions d'utilisateur, donc n'ajoutez que des tâches issues de sources de confiance, la même règle que pour les extensions, appliquée à la configuration.

La voie tâche est aussi celle où le script Python justifie son avantage sur jq : un script plus une tâche gèrent les fichiers plats, les fichiers imbriqués, les objets uniques et les tableaux de la même façon, sans modification de commande par fichier. Si vous convertissez chaque semaine des exports de la même API, c'est la voie qui rapporte.

Voie 4 : quand quitter VS Code entièrement et utiliser un convertisseur en ligne

Il y a trois situations où quitter l'éditeur est le bon choix. Premièrement, un fichier ponctuel sur une machine où vous ne pouvez pas installer d'extensions et où vous n'avez ni jq ni Python sous la main : un ordinateur portable emprunté, une machine de travail verrouillée, un Chromebook. Deuxièmement, un JSON dont l'imbrication est assez malcommode pour que l'écriture de chemins jq explicites ressemble à du travail : un convertisseur en ligne avec interrupteur d'aplatissement transforme tout l'arbre en colonnes en un clic, et vous pouvez voir l'aperçu avant de télécharger. Troisièmement, le partage : si le CSV est destiné à un collègue qui n'utilise pas VS Code, convertir dans le navigateur et lui envoyer le fichier fini est plus simple que de lui expliquer votre chaîne d'outils.

La voie en ligne sur ce site tourne entièrement dans votre navigateur : collez du JSON ou téléversez le fichier, la conversion se fait côté client sans envoi vers un serveur, les données imbriquées s'aplatissent en colonnes à notation pointée, et le téléchargement est en UTF-8 pur. Pour un utilisateur de VS Code, la comparaison honnête est la suivante : le convertisseur en ligne échange la répétabilité d'une tâche contre zéro installation et un aperçu instantané. Utilisez les voies de l'éditeur quand la conversion se répète ; utilisez la voie navigateur quand ce n'est pas le cas.

Inspecter le résultat dans VS Code (et pourquoi le texte brut est la vérité)

Quelle que soit la voie choisie, inspectez le CSV dans VS Code avant de lui faire confiance. VS Code vous montre le fichier brut, les virgules, les guillemets et les sauts de ligne réels, tandis qu'un tableur vous montre son interprétation de ces éléments. Si les deux ne sont pas d'accord, le texte brut est la vérité et le tableur devine. Deux extensions facilitent l'inspection : Edit CSV ouvre un CSV comme un tableau modifiable de type tableur dans l'éditeur, et Rainbow CSV colore chaque colonne d'une couleur différente pour que les lignes mal alignées sautent aux yeux.

Le signalement « mon CSV est cassé » le plus fréquent est un fichier qui s'ouvre dans Excel en une seule longue colonne. Neuf fois sur dix, le fichier va bien : Excel a deviné le mauvais délimiteur (souvent un fichier à points-virgules ouvert comme fichier à virgules) ou le mauvais encodage. Ouvrez d'abord le fichier dans VS Code : si les virgules et les guillemets semblent justes dans le texte brut, le fichier est juste, et la correction se joue côté importation (Excel : Données > À partir d'un fichier texte/CSV, choisissez le délimiteur et l'encodage 65001 UTF-8). La barre d'état en bas de VS Code affiche aussi l'encodage du fichier ; si un fichier semble déformé, utilisez Fichier > Enregistrer avec l'encodage > UTF-8 pour le normaliser, et Enregistrer avec l'encodage > UTF-8 avec BOM uniquement si un outil Windows précis exige un BOM.

Dépannage : les quatre erreurs que les utilisateurs de VS Code rencontrent vraiment

JSON invalide, signalé avant la conversion. Si le fichier porte des ondulations rouges ou si le panneau Problèmes liste des erreurs, corrigez-les d'abord : aucun convertisseur n'accepte du JSON mal formé. Deux pièges propres à VS Code : les fichiers de style paramètres autorisent les commentaires et les virgules finales (c'est du JSONC, pas du JSON), et une virgule finale parasite après le dernier élément est l'erreur de syntaxe la plus fréquente. Supprimez les commentaires et les virgules finales avant de convertir ; le service de langage JSON de VS Code indique généralement la ligne exacte.

Un seul objet au lieu d'un tableau. Les API renvoient souvent {"data": [...], "total": 2} ou un {...} isolé plutôt qu'un tableau nu. Le script Python ci-dessus gère un objet isolé en l'enveloppant dans une ligne unique, et pour un objet enveloppe, vous voulez les lignes qu'il contient : extrayez d'abord le tableau (en jq, .data | ... ; en Python, rows = json.load(...)["data"]), sinon le convertisseur vous donnera une seule ligne avec tout le tableau transformé en chaîne dans une cellule.

Des données imbriquées qui « disparaissent ». L'aplatissement fait toujours des choix : les listes d'objets n'ont pas de représentation en une seule cellule, et le script Python ci-dessus ne joint que les listes de valeurs simples, en traitant les listes d'objets par récursion avec des clés indexées (items[0].name). Si vos listes contiennent des objets et que la sortie semble fausse, c'est la règle d'aplatissement qui se montre, pas une perte de données : décidez par colonne si vous voulez que la liste soit jointe, étendue en lignes, ou abandonnée, et dites-le dans le script plutôt que d'accepter un défaut en silence.

Fichiers énormes. Une extension qui convertit un fichier JSON de 200 Mo dans l'éditeur peut figer l'interface ; les voies du terminal diffusent mieux, et jq en particulier gère les gros fichiers sans charger d'aperçu. Si VS Code semble lent, c'est le signal d'utiliser le terminal : jq ou Python en ligne de commande, avec l'éditeur qui ne fait qu'afficher le résultat.

Quelle voie choisir ?

Un seul fichier, tout de suite, sans installation : l'extension JSON2CSV, installez, Palette de commandes, enregistrez le nouvel onglet. Des fichiers que vous convertissez chaque semaine : le script Python plus une tâche tasks.json, une touche, le même résultat à chaque fois. Un fichier plat rapide et vous aimez le terminal : la commande jq en une ligne. Un fichier ponctuel sur une machine verrouillée, ou une imbrication malcommode que vous voulez prévisualiser avant de vous engager : le convertisseur en ligne. Aucune de ces voies n'est « la » façon VS Code, parce que VS Code n'a délibérément aucune façon intégrée unique : l'éditeur vous donne les pièces, et la bonne combinaison est celle qui correspond à la fréquence de vos conversions et à l'imbrication de vos données.

Ouvrir le convertisseur JSON vers CSV gratuit

Guides associés

Questions fréquentes

Comment convertir JSON en CSV dans VS Code ?

VS Code n'a pas de convertisseur intégré, alors ajoutez l'une des quatre voies : installez l'extension JSON2CSV et lancez Convert JSON to CSV depuis la Palette de commandes ; utilisez le terminal intégré avec jq (données plates) ou un script Python (données imbriquées) ; enregistrez la conversion comme tâche tasks.json pour des répétitions en une touche ; ou collez le JSON dans un convertisseur en ligne gratuit pour un fichier ponctuel sans installation.

Quelle est la meilleure extension VS Code pour JSON vers CSV ?

JSON2CSV par khaeransori est la plus directe : installez-la depuis la vue Extensions, ouvrez votre fichier JSON, lancez Convert JSON to CSV depuis la Palette de commandes, et le CSV s'ouvre dans un nouvel onglet. DataMorph (Data Format Converter) ajoute la conversion Excel et le traitement par lots ; Algae Data est une alternative plus légère. Vérifiez toujours le nom de l'éditeur avant d'installer une extension.

Puis-je convertir JSON en CSV dans VS Code sans extension ?

Oui, utilisez le terminal intégré (Ctrl+`). Pour les tableaux JSON plats : jq -r '(map(keys) | add | unique) as $cols | $cols, (.[] | [.[$cols[]]] | @csv)' file.json > file.csv. Pour du JSON imbriqué, utilisez jq avec des chemins de colonnes explicites ou un petit script Python qui aplatit les objets imbriqués en colonnes à notation pointée. Les deux voies ont été testées sur de vraies données pour ce guide.

Pourquoi jq échoue-t-il avec « object is not valid in a csv row » ?

Parce qu'une ligne contient un objet ou un tableau imbriqué, et que les lignes CSV ne peuvent contenir que des valeurs plates. La recette jq @csv générique ne fonctionne que sur des lignes plates. Corrigez en nommant les colonnes explicitement (jq -r '["id","name",...], (.[] | [.id, .customer.name, ...]) | @csv') ou en aplatissant d'abord avec un script Python qui transforme les objets imbriqués en colonnes à notation pointée.

Comment automatiser la conversion JSON vers CSV dans VS Code ?

Enregistrez une tâche dans .vscode/tasks.json qui exécute votre commande de conversion sur le fichier ouvert, par exemple python3 ${workspaceFolder}/convert.py ${file} ${fileDirname}/${fileBasenameNoExtension}.csv, puis appuyez sur Ctrl+Shift+B (Terminal > Exécuter la tâche) avec n'importe quel fichier JSON ouvert. Le CSV est écrit à côté du fichier source à chaque fois, sans retaper.

Pourquoi mon CSV de VS Code s'ouvre-t-il en une seule colonne dans Excel ?

Généralement, le fichier va bien et Excel a deviné le mauvais délimiteur ou le mauvais encodage. Vérifiez d'abord le texte brut dans VS Code : si les virgules et les guillemets semblent justes là, le fichier est juste. Réimportez dans Excel via Données > À partir d'un fichier texte/CSV, choisissez le bon délimiteur et l'encodage 65001 (UTF-8), au lieu de double-cliquer sur le fichier.

VS Code peut-il convertir du JSONC ou du JSON avec commentaires en CSV ?

Pas directement : les commentaires et les virgules finales sont du JSONC, pas du JSON, et aucun convertisseur ne les accepte. Supprimez d'abord les commentaires et les virgules finales (le panneau Problèmes de VS Code signale les lignes exactes), puis convertissez le JSON propre. Cela s'applique aussi aux fichiers de paramètres et aux fichiers .code-workspace, qui sont du JSONC par conception.

Fichier ponctuel ? Convertissez-le dans le navigateur, sans extension

Collez du JSON ou téléversez un fichier : les données imbriquées s'aplatissent en colonnes propres, les délimiteurs et les guillemets sont automatiques, et le téléchargement est en UTF-8 pur. Gratuit, sans inscription, tout se passe dans votre navigateur.

Ouvrir le convertisseur JSON vers CSV
Tous les guides