Que veut vraiment dire convertir JSON en CSV localement ?
Le mot localement est utilisé pour trois choses différentes, et la différence compte quand la confidentialité est la raison de votre question. Le premier sens est côté client : une page web qui fait la conversion dans votre onglet de navigateur. Vous regardez toujours un site web, mais la page n'envoie jamais vos données ailleurs, parce que le code de conversion tourne sur votre machine. Le deuxième sens est un logiciel installé : un programme sur votre ordinateur, comme une application de bureau ou une extension d'éditeur, qui lit un fichier et en écrit un autre. Le troisième sens est un script que vous lancez vous-même : quelques lignes de Python, de jq ou de Node que vous contrôlez entièrement et que vous pouvez lire avant de lancer.
Les trois gardent le fichier sur votre machine. Ils diffèrent par ce que vous devez installer, ce que vous devez apprendre, et la répétabilité du résultat. Une page côté client ne demande rien à installer et rien à apprendre, mais vous répétez les clics à chaque fois. Un script demande un outil installé et quelques lignes tapées, mais vous pouvez le lancer sur cent fichiers avec une seule commande et obtenir le même résultat à chaque fois. Le reste de ce guide traite les trois comme du local, et dit pour chaque méthode de quel type il s'agit.
Une chose que localement ne veut pas dire, c'est privé par magie. Un script téléchargé chez un inconnu et lancé sans lecture peut faire n'importe quoi sur votre machine, y compris envoyer votre fichier ailleurs. Les scripts de ce guide sont assez courts pour être lus en entier, et vous devriez lire n'importe quel script avant de le lancer sur des données sensibles. Le local est une propriété de l'endroit où le travail se fait, et vous la vérifiez en lisant le code ou en observant le réseau, pas en faisant confiance à une étiquette.
Quand le local est le bon choix, et quand il ne l'est pas
La conversion locale est le bon choix dans quatre situations. La première est les données sensibles : listes de clients, dossiers internes, tout ce qui relève d'un contrat ou d'une règle de confidentialité qui dit que les données restent dans l'entreprise. Si le fichier ne peut pas quitter la machine, un convertisseur côté serveur n'est tout simplement pas une option, aussi pratique soit-il. La deuxième est l'absence de connexion : un avion, un site isolé, un réseau qui bloque l'outil que vous vouliez. Les outils locaux fonctionnent exactement pareil hors ligne, parce qu'il n'y a aucun serveur à joindre.
La troisième est la répétabilité. Si vous convertissez le même type d'export chaque semaine, un script transforme une séance de quinze minutes de clics en une seule commande, et la même commande donne les mêmes colonnes dans le même ordre à chaque fois. La quatrième est la taille et le contrôle : un fichier de millions de lignes, ou un fichier dont vous devez renommer et réordonner les colonnes, se gère plus facilement avec un script que vous pouvez ajuster qu'avec une page dont les options sont figées.
Le local est le mauvais choix dans trois situations. Si plusieurs personnes ont besoin de la même conversion avec les mêmes réglages, une page partagée vaut mieux que cinq copies d'un script qui divergent. Si vous n'avez aucune machine que vous contrôlez, par exemple un ordinateur emprunté ou un portable professionnel verrouillé qui ne peut pas installer Python ou jq, une page côté client reste locale et reste le meilleur choix. Et si le fichier est plus gros que ce que votre machine peut tenir confortablement en mémoire, aucune méthode locale n'aide tant que vous n'avez pas découpé le fichier ou diffusé son contenu en flux, ce qui est un autre travail. Posez-vous une question avant de choisir : ce fichier doit-il rester sur cette machine, et vais-je refaire cette conversion ? Si les deux réponses sont oui, choisissez le local et écrivez un script. Si seule la première est oui, une page côté client suffit.
Méthode 1 : le convertisseur de cette page est déjà local
La méthode locale la plus simple est déjà devant vous. Le convertisseur de cette page tourne entièrement dans votre onglet de navigateur. Quand vous collez du JSON ou envoyez un fichier, la page analyse le JSON, l'aplatit, et construit le texte CSV dans votre navigateur, puis vous remet le résultat sous forme de fichier téléchargé. Il n'y a aucune étape d'envoi et aucun serveur qui attend vos données, parce que le code de conversion est livré avec la page et tourne sur votre machine.
Vous pouvez vérifier cette affirmation vous-même en une trentaine de secondes, et vous devriez le faire, parce qu'une affirmation sur la confidentialité vaut d'être vérifiée. Ouvrez le convertisseur, déconnectez-vous du réseau ou activez le mode avion, puis collez du JSON et convertissez-le. Cela fonctionne toujours, parce que rien dans la conversion n'a besoin du réseau. Le seul bouton de la page qui touche au réseau est le bouton facultatif de récupération depuis une URL, qui charge du JSON depuis une adresse web que vous tapez. Si vous collez ou envoyez au lieu de récupérer, le réseau n'est jamais utilisé.
Cela fait de la page la bonne méthode locale pour les conversions uniques et pour les machines où vous ne pouvez rien installer. Les limites sont les mêmes que pour toute page : vous répétez les clics pour chaque fichier, et les très gros fichiers ralentiront l'onglet. Pour un seul fichier, ou pour un fichier que vous ne convertissez qu'une fois, ces limites ne comptent pas. Pour un export hebdomadaire, passez à un script ci-dessous et gardez la page comme vérification rapide.
Méthode 2 : Python, le cheval de trait local, sans paquet à installer
Python est la méthode locale la plus utile pour la plupart des gens, parce qu'il est déjà installé sur la plupart des machines de développeurs et que la bibliothèque standard seule suffit. Pas de pandas, pas de paquets, rien à télécharger. Le script ci-dessous lit un fichier JSON d'objets, prend les noms de colonnes du premier objet, et écrit un CSV avec le module csv standard, qui gère les guillemets correctement tout seul. Enregistrez-le sous json2csv.py et lancez-le avec python3 json2csv.py orders.json orders.csv.
import json, csv, sys
with open(sys.argv[1]) as f:
rows = json.load(f)
with open(sys.argv[2], 'w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=rows[0].keys())
writer.writeheader()
writer.writerows(rows)Testé sur le fichier d'exemple utilisé dans tout ce guide, trois commandes avec des champs id, customer et tags, ce script a produit une ligne d'en-tête plus trois lignes de données. L'objet customer imbriqué est sorti sous forme de représentation Python, pas de texte JSON, et la liste tags est sortie sous forme de liste représentée, parce qu'un simple DictWriter n'aplatit pas les valeurs imbriquées. C'est la limite honnête de la version courte : les données plates se convertissent parfaitement, les données imbriquées demandent une étape de plus. L'étape d'aplatissement est petite. Une courte fonction récursive qui transforme les objets imbriqués en clés en notation pointée, customer.name et customer.city, avant l'écriture, vous donne les mêmes colonnes que la page de convertisseur produit avec son interrupteur d'aplatissement activé.
Le module csv fait ici un vrai travail pour vous. Il entoure de guillemets les cellules qui contiennent le délimiteur, double les guillemets internes, et écrit les fins de ligne que votre tableur attend. Ne construisez pas un CSV en joignant vous-même les valeurs avec des virgules. Un assemblage manuel casse à la première virgule dans une valeur, et cette casse est silencieuse : le fichier a l'air correct jusqu'à ce qu'une colonne se décale. La version en bibliothèque standard tourne aussi pareil sur chaque machine avec Python 3, ce qui en fait la méthode à choisir quand un collègue doit aussi lancer votre conversion.
Méthode 3 : jq, la commande en une ligne pour les habitués du terminal
Si vous utilisez déjà le terminal, jq transforme tout le travail en une seule ligne, pour les données plates. Il lit le JSON, prend les clés du premier objet comme en-tête, puis émet chaque ligne sous forme de ligne CSV, avec les guillemets gérés par son formateur @csv. Aucun fichier de script, aucune boucle, aucun guillemet manuel. La commande ci-dessous lit un fichier de commandes plat, id, city et total par commande, et écrit orders.csv. Notez la limite, énoncée clairement : le formateur @csv rejette les objets et les listes imbriqués, donc cette commande en une ligne est réservée aux exports plats, et l'exemple imbriqué de la section Python échoue dessus avec une erreur au lieu d'un faux tableau, ce qui est le type d'échec sûr.
jq -r '(.[0] | keys_unsorted) as $keys | $keys, map([.[ $keys[] ]])[] | @csv' orders-flat.json > orders.csvTesté sur un fichier plat de trois commandes, la sortie a été une ligne d'en-tête entre guillemets, "id","city","total", suivie de trois lignes de données avec les cellules de texte entre guillemets et les nombres nus, exactement la forme que produit @csv. Le détail keys_unsorted compte : un simple keys trierait les colonnes par ordre alphabétique, ce qui changerait l'ordre des colonnes par rapport à votre fichier. Si vos données ont des objets imbriqués, jq a besoin d'abord d'un filtre d'aplatissement, et la commande en une ligne devient un petit script. Pour les exports plats, ce que la plupart des réponses de listes d'API sont déjà une fois déballées, la commande en une ligne est tout le travail, et elle tourne hors ligne sur toute machine avec jq installé. La limite des données imbriquées a été confirmée sur la machine de test : le même filtre sur l'exemple imbriqué échoue avec une erreur au lieu d'un faux tableau, ce qui est le type d'échec sûr.
Une mise en garde : jq lit tout le fichier en mémoire, donc un export de plusieurs gigaoctets le mettra à l'épreuve comme il met à l'épreuve un onglet de navigateur. Pour les exports ordinaires, jusqu'à des dizaines de mégaoctets, c'est instantané. Pour les très gros fichiers, découpez d'abord le fichier ou utilisez un outil en flux, et traitez cela comme un problème distinct de la conversion.
Méthode 4 : Node, quand la conversion vit dans un projet
Node est la bonne méthode locale quand la conversion fait partie d'un projet plutôt que d'une tâche unique : une étape de construction, un pipeline de données, un script que l'équipe lance déjà. Node est livré avec l'analyse JSON intégrée, donc le seul travail est de transformer les lignes en texte CSV, et le petit script ci-dessous le fait avec une fonction d'aplatissement par points, pour que les objets imbriqués deviennent des colonnes en notation pointée, comme le comportement de la page de convertisseur. Enregistrez-le sous json2csv.mjs et lancez-le avec node json2csv.mjs orders.json orders.csv.
import { readFileSync, writeFileSync } from 'node:fs';
const flatten = (obj, prefix = '', out = {}) => {
for (const [k, v] of Object.entries(obj)) {
const key = prefix ? prefix + '.' + k : k;
if (v && typeof v === 'object' && !Array.isArray(v)) flatten(v, key, out);
else out[key] = Array.isArray(v) ? v.join('; ') : v;
}
return out;
};
const rows = JSON.parse(readFileSync(process.argv[2], 'utf8')).map(r => flatten(r));
const cols = [...new Set(rows.flatMap(r => Object.keys(r)))];
const esc = v => v == null ? '' : /[",\n]/.test(String(v)) ? '"' + String(v).replaceAll('"', '""') + '"' : String(v);
const lines = [cols.join(','), ...rows.map(r => cols.map(c => esc(r[c])).join(','))];
writeFileSync(process.argv[3], lines.join('\n'));Testé sur le même exemple, le script a produit l'en-tête id,customer.name,customer.city,total et trois lignes, avec l'objet customer imbriqué aplati en deux colonnes et la liste tags jointe avec un point-virgule et une espace. La fonction d'échappement suit la même règle que la page de convertisseur utilise : entourer une cellule de guillemets seulement quand elle contient le délimiteur, un guillemet, ou un saut de ligne, et doubler tout guillemet interne. Cette règle est tout l'art des guillemets CSV, et la respecter est la différence entre un fichier qui s'ouvre proprement et un fichier qui décale silencieusement ses colonnes.
Le script est volontairement court pour que vous puissiez le lire avant de le lancer. Il prend l'union de toutes les colonnes sur toutes les lignes, donc une ligne à qui il manque un champ obtient une cellule vide, ce qui correspond à la page de convertisseur. Si vous avez besoin de flux pour des fichiers énormes, ou de renommage de colonnes, ce sont des ajouts à ce script, pas des remplacements.
Méthode 5 : les outils que vous avez déjà, VS Code et Excel hors ligne
Deux autres méthodes locales ne demandent aucune nouvelle installation si vous utilisez déjà ces outils. Dans VS Code, une extension convertit le fichier JSON ouvert en CSV depuis la palette de commandes, ce qui est le chemin local le plus rapide quand vous modifiez déjà le fichier. La procédure complète, y compris quelle extension et les commandes exactes, est dans le guide VS Code lié ci-dessous. Dans Excel, Power Query lit un fichier JSON depuis votre disque et le transforme en tableau sans que le fichier quitte jamais la machine : Données, Obtenir des données, À partir d'un fichier, À partir de JSON, puis développez les colonnes et chargez. Les deux sont entièrement hors ligne une fois l'outil installé.
Ces méthodes échangent le contrôle contre la commodité. VS Code et Excel décident pour vous de la gestion des colonnes, et leurs réglages par défaut conviennent généralement aux données plates et surprennent parfois pour les données imbriquées. Si la sortie semble fausse, le diagnostic est le même que partout ailleurs : vérifiez si les valeurs imbriquées ont été aplanies ou laissées sous forme de texte JSON, et vérifiez le délimiteur à l'ouverture. Pour un fichier que vous convertissez une fois, l'une ou l'autre méthode vaut mieux que d'installer quelque chose de nouveau. Pour un fichier que vous convertissez chaque semaine, un script qui vous appartient vaut mieux que les deux.
Quand le local ne suffit pas, et quoi faire alors
La conversion locale a trois vraies limites, et les nommer vous évite de forcer une méthode locale là où elle ne convient pas. La première est la collaboration : si cinq personnes ont besoin de la même conversion avec les mêmes réglages, cinq scripts divergent et une page partagée reste cohérente. La deuxième est l'accès à la machine : sur un ordinateur emprunté ou verrouillé, vous ne pourrez peut-être pas installer Python, jq ou Node, et alors la page côté client reste votre méthode locale. La troisième est l'échelle : un fichier plus gros que la mémoire mettra à l'épreuve chaque méthode ici, et la solution est de découper le fichier ou de le diffuser ligne par ligne, pas un autre convertisseur.
Il y a aussi une limite que les gens oublient : la conversion locale ne corrige pas les mauvaises données. Un script convertit exactement ce que le fichier contient, y compris les champs manquants, les types mélangés, et les formes incohérentes. Si le même export a parfois un champ et parfois non, chaque méthode de ce guide vous donne l'union des colonnes avec des blancs, ce qui est honnête mais peut ne pas être ce que votre tableur attend. Corrigez l'export source quand vous le pouvez, et documentez les blancs quand vous ne le pouvez pas.
Hygiène des fichiers locaux : quatre vérifications avant de faire confiance au CSV
Une conversion locale n'est terminée que quand la sortie est vérifiée, et les vérifications prennent moins d'une minute. D'abord, gardez le JSON d'origine. Ne convertissez jamais sur place en écrasant la source, parce qu'une conversion perd des informations : les types deviennent du texte, la structure imbriquée devient des noms de colonnes, et il n'y a aucun moyen de revenir à l'arbre d'origine à partir du seul CSV. Ensuite, nommez la sortie pour qu'elle se trie bien : orders-2026-10-25.csv vaut mieux que output-final-v2.csv, et la date vous dit de quel export elle vient.
Troisièmement, comptez les lignes. Le CSV devrait avoir une ligne d'en-tête plus une ligne par objet dans le JSON, et un comptage rapide repère l'échec le plus courant, qui est un détecteur de lignes qui choisit la mauvaise liste dans une réponse enveloppée. Quatrièmement, ouvrez le CSV avec le bon délimiteur. Un fichier qui s'ouvre en une seule colonne n'est presque jamais une donnée cassée ; c'est un décalage de délimiteur entre le fichier et le tableur, et une réimportation avec le délimiteur correspondant corrige le problème. La page de convertisseur, le module csv de Python, jq et le script Node ci-dessus entourent tous de guillemets selon le délimiteur actif, donc une ouverture en une seule colonne est un problème d'ouverture, pas un problème de conversion.
Dépannage des conversions locales
Les mêmes quatre problèmes apparaissent dans chaque méthode locale, et chacun a une seule solution. Fichier introuvable veut dire que le terminal est dans un dossier différent de celui du fichier ; vérifiez le chemin avant toute autre chose. JSON invalide veut dire que le fichier source est cassé près de la position signalée, généralement un guillemet manquant ou une virgule finale ; validez-le et corrigez la source, parce qu'aucun convertisseur ne devrait deviner face à une entrée cassée. Une ouverture en une seule colonne veut dire un décalage de délimiteur côté ouverture ; réimportez et choisissez le délimiteur avec lequel le fichier a été écrit.
Des données imbriquées qui apparaissent sous forme de texte JSON illisible dans les cellules veulent dire que l'aplatissement a été sauté : le court script Python et la commande jq en une ligne n'aplatissent pas, donc utilisez les variantes avec aplatissement ci-dessus ou la page de convertisseur avec son interrupteur d'aplatissement activé. Des colonnes dans un ordre différent de celui du fichier veulent dire qu'un outil a trié les clés ; jq a besoin de keys_unsorted, et le script Node préserve l'ordre de première apparition. Des lignes entièrement manquantes veulent dire que le détecteur de lignes a choisi une liste différente de celle que vous visiez, ce qui arrive avec les réponses d'API enveloppées ; pointez l'outil vers la liste elle-même, ou déballez d'abord la réponse.
Guides associés
- json to csv converter download : ce qu'il faut vraiment télécharger (Guide 2026)
- Comment faire JSON to CSV en ligne : convertissez dans cet onglet en 30 secondes (Guide 2026)
- Comment aplatir JSON en CSV : ce que fait vraiment l’interrupteur (Guide 2026)
- Quelles sont les façons de convertir JSON en CSV localement ? 6 méthodes comparées (Guide 2026)
- Votre CSV s'ouvre dans une seule colonne dans Excel : pourquoi et comment le corriger (Guide 2026)
- Pourquoi votre CSV affiche des caractères spéciaux illisibles dans Excel, et comment corriger l'encodage (Guide 2026)
- Pourquoi Excel supprime les zéros non significatifs de vos codes CSV, et comment les conserver (Guide 2026)
- Pourquoi Excel change les dates de votre CSV, et comment les conserver (Guide 2026)
- Pourquoi l'enregistrement de votre CSV dans Excel le modifie, et comment protéger l'original (Guide 2026)
- Fichier CSV trop volumineux pour Excel : pourquoi Excel ne l'ouvre pas et que faire à la place (Guide 2026)
Questions fréquentes
Que veut dire convertir JSON en CSV localement ?
Cela veut dire que la conversion tourne sur votre propre machine au lieu de tourner sur un serveur. Cela peut être une page de convertisseur côté client qui tourne dans votre onglet de navigateur, un logiciel installé comme VS Code ou Excel, ou un script que vous lancez vous-même en Python, jq ou Node. Dans les trois cas, le fichier ne doit jamais quitter votre ordinateur.
Le convertisseur de cette page est-il local ?
Oui. Collez ou envoyez du JSON et la conversion tourne dans votre onglet de navigateur, avec le résultat remis sous forme de fichier téléchargé. Vous pouvez le vérifier en vous déconnectant du réseau et en convertissant quand même : cela fonctionne toujours. Le seul bouton qui utilise le réseau est le bouton facultatif de récupération depuis une URL, qui charge du JSON depuis une adresse que vous tapez.
Faut-il installer quelque chose pour convertir JSON en CSV localement ?
Non, si vous utilisez la page de convertisseur, qui ne demande rien à installer. Si vous voulez un script répétable, Python 3 est déjà installé sur la plupart des machines de développeurs et sa bibliothèque standard seule suffit. jq et Node sont une installation chacun et les deux tournent entièrement hors ligne une fois installés.
Quelle méthode locale est la meilleure pour les données sensibles ?
Toute méthode dont vous pouvez voir le code convient, mais un court script que vous lisez vous-même est l'option la plus solide, parce qu'il n'y a rien de caché à qui faire confiance. Lisez le script avant de le lancer sur des données sensibles, gardez le JSON d'origine, et préférez une page côté client ou un script à tout outil qui envoie le fichier.
Puis-je convertir JSON en CSV localement sans internet ?
Oui. La page de convertisseur fonctionne hors ligne une fois chargée, et Python, jq, Node, VS Code et Excel tournent tous entièrement hors ligne. La seule étape qui a besoin d'une connexion est la récupération de JSON depuis une URL, ce qui est facultatif et distinct de la conversion elle-même.
Pourquoi mon CSV local s'ouvre-t-il en une seule colonne ?
C'est un décalage de délimiteur côté ouverture, pas une donnée cassée. Votre tableur a découpé le fichier sur un délimiteur différent de celui avec lequel il a été écrit. Réimportez le fichier et choisissez le délimiteur correspondant, ou régénérez le CSV avec un point-virgule ou une tabulation, et les colonnes apparaîtront.
La conversion locale fait-elle perdre des informations ?
Oui, les mêmes informations que toute conversion perd. Les valeurs sont préservées mais les types deviennent du texte, les objets imbriqués deviennent des colonnes en notation pointée, et les listes deviennent des cellules jointes ou du texte JSON. Il n'y a aucun moyen de revenir à l'arbre d'origine à partir du seul CSV, donc gardez toujours le fichier JSON d'origine.
Essayez la méthode locale tout de suite
Collez n'importe quel JSON dans le convertisseur de cette page et regardez-le convertir dans votre onglet de navigateur, sans envoi, sans inscription, rien ne quitte votre machine. Ou copiez le script Python et lancez-le sur vos propres fichiers.
Ouvrir le convertisseur JSON en CSV