Json To Csv LogoJson To Csv

Existe-t-il un moyen de convertir JSON en CSV ? Oui — 5 méthodes, choisissez selon votre situation (Guide 2026)

Oui. Il existe cinq façons pratiques de convertir JSON en CSV, et la bonne dépend de votre situation : un fichier ponctuel, une destination tableur, une tâche récurrente ou un pipeline. Les voici, toutes testées sur le même fichier, plus les cas où la conversion elle-même est le mauvais choix.

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

Le fichier d'équipe sur lequel chaque méthode est testée

La plupart des guides de conversion décrivent chaque méthode dans l'abstrait, ce qui les rend impossibles à comparer. Celui-ci fait l'inverse : chaque méthode ci-dessous s'applique au même fichier de trois enregistrements, donc les résultats sont directement comparables. Le fichier est petit mais pas trivial — il contient un objet imbriqué (dept avec team et floor), une liste (skills), et les deux cas limites qui font trébucher les conversions réelles : un booléen (active) et une liste vide (Lina n'a aucune compétence).

Si une méthode ne parvient pas à traiter ce fichier proprement, elle ne traitera pas non plus votre vrai fichier. Si elle y parvient, vous savez exactement à quoi ressemble son résultat avant de lui confier quoi que ce soit de plus gros. Gardez ce fichier en tête pendant votre lecture : la bonne réponse comporte six colonnes (id, name, dept.team, dept.floor, skills, active) et trois lignes, avec la cellule skills d'Ana qui affiche chat; phone et celle de Lina qui reste vide.

staff.json, the shared test file
[
  { "id": 1, "name": "Ana", "dept": { "team": "Support", "floor": 2 }, "skills": ["chat", "phone"], "active": true },
  { "id": 2, "name": "Ken", "dept": { "team": "Sales", "floor": 3 }, "skills": ["email"], "active": false },
  { "id": 3, "name": "Lina", "dept": { "team": "Support", "floor": 2 }, "skills": [], "active": true }
]

Méthode 1 : un convertisseur en ligne — sans rien installer

Ouvrez un convertisseur JSON vers CSV en ligne gratuit, collez le JSON ou importez le fichier, puis téléchargez le CSV. Voilà toute la méthode, et pour un fichier ponctuel, c'est la bonne : rien à installer, rien à apprendre, et le résultat est prêt en moins d'une minute. Le convertisseur de ce site s'exécute entièrement dans votre navigateur, donc le fichier ne quitte jamais votre machine, et son interrupteur d'aplatissement décide de la façon dont les données imbriquées sont traitées.

Avec l'aplatissement activé, le fichier d'équipe se convertit exactement en la réponse à six colonnes ci-dessus : dept devient dept.team et dept.floor, la liste skills se joint en une seule cellule avec un séparateur point-virgule, et la liste vide de Lina devient une cellule vide. Avec l'aplatissement désactivé, le même fichier conserve dept et skills sous forme de texte JSON dans des cellules uniques — un CSV valide, mais pas un tableau que vous pouvez trier ou filtrer. Notre guide précédent sur l'aplatissement de JSON en CSV documente l'interrupteur cellule par cellule, y compris ses cas limites.

Les limites honnêtes : un convertisseur en ligne traite un fichier à la fois. Si vous devez convertir cinquante fichiers chaque matin, ou si la conversion doit se produire à l'intérieur d'un autre programme, l'une des méthodes ci-dessous conviendra mieux. Et si c'est votre liste elle-même que vous voulez analyser — une ligne par compétence, et non une ligne par personne — aucun convertisseur en ligne ne fait cela ; il vous faut la recette d'éclatement de notre guide sur l'aplatissement des données JSON.

Way 1 output: online converter, flattening on (verified)
id,name,dept.team,dept.floor,skills,active
1,Ana,Support,2,chat; phone,true
2,Ken,Sales,3,email,false
3,Lina,Support,2,,true

Méthode 2 : le tableur que vous possédez déjà — Excel Power Query

Si le CSV est de toute façon destiné à un tableur, vous n'avez peut-être pas besoin de convertisseur du tout : Excel peut lire le JSON directement via Power Query. Ouvrez un classeur vide, allez dans Données, Obtenir des données, À partir d'un fichier, À partir de JSON, choisissez le fichier, et Power Query vous affiche les enregistrements. Développez la colonne dept pour aplatir l'objet imbriqué en colonnes team et floor, développez ou extrayez la colonne skills selon que vous voulez une ligne par compétence ou une seule cellule jointe, puis Fermer et charger. Le résultat arrive sous forme de vrai tableau Excel, prêt à filtrer et à croiser.

Deux choses à savoir avant de commencer. D'abord, l'étape de développement s'applique par colonne imbriquée : un fichier à trois niveaux d'imbrication exige trois développements, et il est facile d'en manquer un et de se retrouver avec une colonne de valeurs Record. Ensuite, ouvrir un CSV terminé dans Excel comporte ses propres pièges — un fichier UTF-8 peut s'ouvrir avec des caractères déformés, et une valeur comme 007 peut perdre son zéro initial — c'est pourquoi notre guide sur la création de CSV à partir de JSON couvre l'habitude de valider par réimportation : ouvrez le résultat, vérifiez les caractères, vérifiez les codes, et seulement ensuite considérez que c'est terminé.

Google Sheets est la seule lacune de cette méthode. Sheets ne propose aucune importation JSON native : il n'existe pas d'option Fichier, Importer, JSON. Les solutions pratiques consistent à passer d'abord par un convertisseur en ligne, ou à utiliser un petit Apps Script qui récupère et analyse le JSON. Si vous êtes déjà dans Sheets, la voie du convertisseur est plus rapide ; si l'importation doit se répéter chaque jour, la voie du script l'emporte.

Méthode 3 : du code que vous exécutez déjà — Python ou jq

Si vous écrivez déjà du code, Python et jq sont les deux bêtes de somme, et ils divergent sur un point instructif. La fonction json_normalize de pandas aplatit automatiquement les objets imbriqués en colonnes à notation pointée — dept devient dept.team et dept.floor sans étape supplémentaire — mais elle laisse les listes sous forme de chaînes repr Python à moins que vous ne les joigniez vous-même. Exécutez-la sans la jointure et la cellule skills d'Ana affiche ['chat', 'phone'], c'est-à-dire une liste imprimée en texte, et non une valeur utilisable. La correction par jointure en une ligne se trouve dans l'extrait ci-dessous, et le résultat correspond alors exactement à celui du convertisseur en ligne.

jq adopte l'approche inverse : il ne fait rien automatiquement, et chaque colonne est explicite. Vous nommez chaque champ, vous choisissez la jointure, et vous obtenez exactement la ligne d'en-tête que vous avez écrite. Cette explicitation est la vraie force de jq pour les conversions ponctuelles de fichiers biscornus, et sa faiblesse pour les fichiers larges — un enregistrement à quarante champs exige quarante expressions. Pour le fichier d'équipe, les deux outils produisent les mêmes six colonnes et trois lignes, et c'est bien là l'essentiel : la méthode change, la bonne réponse ne change pas.

Une dernière remarque Python pour le cas récurrent : json_normalize combiné à explode transforme une liste en une ligne par élément, et c'est ce mouvement d'éclatement qu'aucun convertisseur en ligne ne propose. Si votre analyse exige une ligne par compétence, voilà la recette — elle est présentée en détail, avec un équivalent jq vérifié, dans notre guide sur l'aplatissement des données JSON.

Way 3 output: Python, json_normalize plus join (verified)
import json
import pandas as pd

rows = json.load(open('staff.json'))
df = pd.json_normalize(rows)
df['skills'] = df['skills'].apply(lambda v: '; '.join(v))
df.to_csv('staff.csv', index=False)

# staff.csv:
# id,name,skills,active,dept.team,dept.floor
# 1,Ana,chat; phone,True,Support,2
# 2,Ken,email,False,Sales,3
# 3,Lina,,True,Support,2

Méthode 3, suite : la commande jq en une ligne

La version jq de la même conversion tient en une seule commande. La ligne d'en-tête est écrite à la main, puis chaque enregistrement correspond à une ligne : les champs imbriqués sont adressés avec des points (dept.team), la liste est jointe avec un point-virgule, et @csv gère les guillemets. Exécutez-la sur le fichier d'équipe et vous obtenez les mêmes trois lignes que la version Python, avec une seule différence cosmétique : jq met entre guillemets chaque champ texte, donc la ligne d'en-tête affiche "id","name",... au lieu de id,name,.... Les deux sont du CSV valide ; chaque tableur et chaque analyseur les lit de façon identique.

jq mérite sa place pour une deuxième raison : il fonctionne sur des fichiers trop gros pour être ouverts dans un éditeur. La commande en une ligne ci-dessus charge tout le fichier en mémoire, ce qui convient pour tout ce qui va jusqu'à quelques dizaines de mégaoctets, mais jq dispose aussi d'un mode streaming (l'option --stream) qui traite un fichier enregistrement par enregistrement. Si votre fichier JSON pèse des centaines de mégaoctets, le jq en streaming ou un script Python par morceaux est la solution ; un onglet de navigateur ne l'est pas.

Way 3 output: jq, explicit columns (verified)
jq -r '(["id","name","dept.team","dept.floor","skills","active"] | @csv),
  (.[] | [.id, .name, .dept.team, .dept.floor, (.skills | join("; ")), .active] | @csv)' staff.json

# "id","name","dept.team","dept.floor","skills","active"
# 1,"Ana","Support",2,"chat; phone",true
# 2,"Ken","Sales",3,"email",false
# 3,"Lina","Support",2,"",true

Méthode 4 : votre éditeur — VS Code

Si vous vivez déjà dans VS Code, la conversion peut se faire sans quitter l'éditeur. La voie la plus rapide est le terminal intégré : ouvrez le dossier, ouvrez un terminal dans VS Code, et exécutez la commande Python ou jq de la méthode 3 — le CSV de sortie apparaît dans le même dossier, et les extensions de visualisation Excel de VS Code ou l'aperçu intégré vous permettent de le vérifier immédiatement. Pour ceux qui préfèrent les clics aux commandes, des extensions comme Rainbow CSV ou une extension JSON vers CSV convertissent le fichier ouvert via la palette de commandes.

Le vrai avantage de la voie de l'éditeur, c'est l'itération : quand le JSON est un fichier de configuration ou une réponse d'API que vous êtes déjà en train de modifier, convertir sur place vous garde dans le contexte, et la vue de comparaison de l'éditeur vous montre exactement ce qui a changé. La procédure complète — extension, terminal et tâche à une touche — se trouve dans notre guide VS Code, y compris les pièges (une extension qui transforme les données imbriquées en texte, un terminal qui écrit dans le mauvais dossier). En résumé : VS Code est un très bon endroit pour convertir, mais la conversion elle-même reste l'une des autres méthodes déguisée en éditeur.

Méthode 5 : dans votre propre application — un appel de bibliothèque

La cinquième méthode s'adresse aux cas où la conversion n'est pas une tâche ponctuelle mais fait partie de quelque chose que vous construisez : un bouton d'exportation de tableau de bord, un rapport nocturne, un pipeline de données. Alors vous ne prenez aucun outil — vous appelez une fonction. L'extrait ci-dessous en est le cœur en JavaScript : parcourir les noms de colonnes pointés, joindre les valeurs de liste, échapper tout ce qui contient une virgule, un guillemet ou un saut de ligne en doublant les guillemets et en enveloppant la cellule. Exécutez-le sur le fichier d'équipe et il produit exactement les mêmes lignes que le convertisseur en ligne, ce qui n'est pas un hasard : le moteur de conversion de ce site repose sur la même idée, avec les cas limites (lignes irrégulières, listes imbriquées, objets vides) déjà gérés.

La décision ici est de construire ou d'emprunter, et la réponse honnête est généralement d'emprunter : json_normalize de pandas, une bibliothèque CSV dans votre langage, ou le modèle de moteur de conversion ci-dessous battront une version faite maison sur les cas limites. Écrivez la vôtre uniquement quand la conversion obéit à des règles qu'aucune bibliothèque ne propose — un schéma d'aplatissement personnalisé, une jointure propre à votre domaine, une exigence de streaming. Et si la conversion s'exécute sur un serveur, rappelez-vous la différence en matière de confidentialité : un convertisseur dans le navigateur garde le fichier sur la machine de l'utilisateur, tandis qu'un convertisseur serveur voit les données.

Way 5 output: a library call in JavaScript (verified)
const rows = require('./staff.json');
const cols = ['id', 'name', 'dept.team', 'dept.floor', 'skills', 'active'];
const get = (r, p) => p.split('.').reduce((o, k) => o?.[k], r);
const esc = v => { const s = String(v ?? '');
  return /[",\n]/.test(s) ? '"' + s.replace(/"/g, '""') + '"' : s; };
console.log(cols.join(','));
for (const r of rows)
  console.log(cols.map(c => esc(c === 'skills' ? (get(r, c) || []).join('; ') : get(r, c))).join(','));

# id,name,dept.team,dept.floor,skills,active
# 1,Ana,Support,2,chat; phone,true
# 2,Ken,Sales,3,email,false
# 3,Lina,Support,2,,true

Quand aucune méthode ne convient

Un guide qui ne dirait que oui mentirait par omission, car il existe des fichiers pour lesquels la conversion en CSV est le mauvais choix, et le savoir fait gagner plus de temps que n'importe quel outil. Le premier cas est celui des données profondément imbriquées ou en forme de graphe : un fil de commentaires où les commentaires contiennent des réponses qui contiennent des réponses, ou des enregistrements qui se référencent entre eux. Aplatir cela en colonnes produit soit des centaines de colonnes clairsemées, soit un résumé avec perte, et la réponse honnête est de garder le format JSON ou d'interroger les données avec jq au lieu de les aplatir.

Le deuxième cas est celui des schémas mixtes : un fichier où un enregistrement possède des clés que les autres n'ont pas, ou où la même clé contient une chaîne dans un enregistrement et un objet dans un autre. Un convertisseur gère cela en prenant l'union de toutes les clés et en laissant des cellules vides, ce qui est correct mais souvent inutile — le tableau résultant est surtout composé de trous. Avant de convertir, demandez-vous si les enregistrements sont vraiment du même type ; sinon, divisez d'abord le fichier par type d'enregistrement, puis convertissez chaque partie.

Le troisième cas est celui de l'échelle : un fichier trop gros pour l'outil utilisé. Un convertisseur de navigateur s'étouffe quelque part autour de quelques dizaines de mégaoctets, une importation dans un éditeur se bloque, et même pandas ralentit. La solution n'est pas un meilleur convertisseur mais une forme différente : divisez le fichier, diffusez-le en streaming avec jq --stream, ou sautez complètement le CSV et gardez les données en JSON Lines (un objet JSON par ligne), qui se diffuse naturellement et reste interrogeable. Notre guide sur la conversion de gros fichiers JSON en CSV en ligne couvre la question de la taille en détail.

Quelle méthode choisir ?

Choisissez selon votre situation, et non selon la réputation de l'outil. Un fichier, une fois, et vous voulez en finir : méthode 1, le convertisseur en ligne. Le résultat doit atterrir dans un tableur dans lequel vous continuerez à travailler : méthode 2, Power Query. Vous écrivez déjà du code et le fichier est biscornu ou la conversion va se répéter : méthode 3, Python ou jq. Vous êtes déjà en train de modifier le fichier dans VS Code : méthode 4, le terminal intégré. La conversion doit se produire à l'intérieur d'un logiciel que vous livrez : méthode 5, un appel de bibliothèque.

Deux critères de départage règlent la plupart des cas restants. Si la confidentialité compte — le fichier contient des données clients, des identifiants, tout ce que vous n'enverriez pas par e-mail — préférez une méthode qui garde les données sur votre machine : un convertisseur dans le navigateur, un script local, ou votre éditeur. Si le fichier est énorme, préférez une méthode qui diffuse en streaming : jq --stream ou un script Python par morceaux, et non un onglet de navigateur. Tout le reste est une question de goût et d'habitude, et chacune des cinq méthodes produit le même CSV correct pour un fichier bien formé.

Ce que chaque méthode doit décider

Quelle que soit la méthode choisie, quatre décisions se cachent à l'intérieur, et deux fichiers convertis avec des réponses différentes à ces décisions ne donnent pas le même CSV. Aplatissement : les objets imbriqués deviennent-ils des colonnes pointées, ou restent-ils du texte JSON dans une cellule ? Délimiteur : virgule, point-virgule, tabulation ou barre verticale — et votre tableur attend-il le même ? Ligne d'en-tête : les noms de colonnes sont-ils inclus, et sont-ils les noms qu'attend votre outil en aval ? Encodage : UTF-8 simple, et votre tableur l'ouvre-t-il en UTF-8 ou autrement ?

Ce ne sont pas des sujets avancés ; ce sont les décisions qui déterminent si le CSV s'ouvre correctement du premier coup ou au cinquième essai. Notre guide sur la création de CSV à partir de JSON passe en revue les sept décisions qui transforment des données brutes en un fichier exploitable, chacune testée avec le vrai convertisseur. Lisez-le une fois, et chaque conversion suivante ira plus vite.

Guides associés

Questions fréquentes

Existe-t-il un moyen gratuit de convertir JSON en CSV ?

Oui — les cinq méthodes de ce guide sont gratuites. Un convertisseur en ligne est gratuit sans inscription, Excel Power Query est inclus dans Excel, Python et jq sont gratuits et open source, VS Code est gratuit, et l'approche JavaScript n'utilise que la bibliothèque standard. Vous n'avez jamais besoin de payer pour convertir JSON en CSV.

Existe-t-il un moyen de convertir JSON en CSV sans rien installer ?

Oui. Utilisez un convertisseur en ligne gratuit : collez le JSON ou importez le fichier dans votre navigateur et téléchargez le CSV. Le convertisseur de ce site s'exécute entièrement dans votre navigateur, donc rien n'est installé et le fichier ne quitte jamais votre machine. Si le fichier est déjà ouvert dans un tableur que vous possédez, Power Query ne demande non plus aucune installation.

Existe-t-il un moyen de convertir JSON en CSV sans écrire de code ?

Oui — deux d'entre elles. Un convertisseur en ligne ne demande aucun code : collez, convertissez, téléchargez. Excel Power Query ne demande pas non plus de code : importez le fichier JSON, développez les colonnes imbriquées en cliquant, et chargez le résultat sous forme de tableau. Le code ne devient utile que lorsque la conversion doit se répéter ou que le fichier est biscornu.

Existe-t-il un moyen de convertir JSON en CSV dans Excel ?

Oui, avec Power Query : Données, Obtenir des données, À partir d'un fichier, À partir de JSON. Développez chaque colonne imbriquée pour aplatir les objets en colonnes pointées, développez ou extrayez les colonnes de liste selon que vous voulez une ligne par élément ou une seule cellule jointe, puis Fermer et charger. Google Sheets ne propose aucune importation native équivalente — passez par un convertisseur en ligne ou utilisez un petit Apps Script à la place.

Existe-t-il un moyen de convertir un gros fichier JSON en CSV ?

Oui, mais pas dans un onglet de navigateur. Pour les fichiers de quelques dizaines de mégaoctets et plus, utilisez le mode streaming de jq (jq --stream), qui traite le fichier enregistrement par enregistrement au lieu de tout charger, ou un script Python par morceaux qui lit et écrit par lots. Si le fichier pèse des centaines de mégaoctets, envisagez de le garder en JSON Lines (un objet JSON par ligne) plutôt qu'en CSV.

Existe-t-il un moyen de convertir JSON en CSV en gardant les données imbriquées intactes ?

Oui — convertissez avec l'aplatissement désactivé. Les objets imbriqués et les listes restent alors du texte JSON dans des cellules uniques, donc rien n'est perdu, mais le résultat n'est pas un tableau triable. Si vous voulez les deux — de vraies colonnes et aucune perte — aplatissez les parties que vous analysez et gardez le reste en texte JSON, ou éclatez la liste dont vous avez besoin en une ligne par élément.

Existe-t-il un moyen de reconvertir CSV en JSON ?

Oui, le trajet inverse est tout aussi bien pris en charge. Notre guide sur la conversion de CSV en JSON couvre trois méthodes fiables : un convertisseur en ligne, un extrait Python et pandas, et l'honnête détour en deux étapes via Excel ou Google Sheets, puisque ni l'un ni l'autre n'exporte nativement en JSON. Les quatre mêmes décisions — aplatissement, délimiteur, en-tête, encodage — s'appliquent en sens inverse.

Un fichier, une minute, aucune installation

Collez du JSON ou importez un fichier : les objets imbriqués s'aplatissent en colonnes à notation pointée, les listes se joignent en cellules propres, et le téléchargement est en UTF-8 simple. Gratuit, sans inscription, et s'exécute entièrement dans votre navigateur.

Ouvrir le convertisseur JSON vers CSV
Tous les guides