Command Palette

Search for a command to run...

Conversion JSON en CSV : 5 méthodes utilisées par les développeurs en 2026

Conversion JSON en CSV : 5 méthodes utilisées par les développeurs en 2026

T
Toolz Team
|Jun 27, 2026|15 min read

Le premier convertisseur JSON-CSV que j'ai jamais écrit a duré trois jours en production.

C'était un bouton "exporter vers une feuille de calcul" dans un panneau d'administration Laravel, et ma logique de conversion était - je n'en suis pas fier - values.join(","). Il a navigué à travers les tests. Un utilisateur a ensuite exporté une liste de clients où une entreprise a été nommée "Smith, Jones & Partenaires", et chaque colonne après avoir déplacé une position vers la droite. Leur comptable a importé 340 lignes de données mal alignées avant que quiconque ne remarque les numéros de téléphone dans la colonne des e-mails.

La virgule en CSV n'est pas un séparateur, vous pouvez vous joindre à la chaîne. C'est une grammaire, définie dans RFC 4180, avec des règles d'échappement réelles. Ce bug est la raison pour laquelle le Convertisseur JSON en CSV Plus tard, j'ai construit pour Toolz.dev s'échapper comme non négociable - et pourquoi ce guide passe du temps réel sur les cas de bord, pas seulement sur le chemin heureux.

Voici les cinq méthodes que j'utilise réellement, lorsque chacune gagne et où chacune mord.

tl;dr : Pour les conversions ponctuelles, collez votre JSON dans le Convertisseur JSON en CSV d'outils.dev — Il aplatit les objets imbriqués avec une notation par points, s'échappe correctement selon la RFC 4180 et s'exécute à 100 % dans votre navigateur. Pour les travaux récurrents, scriptez-le : pd.json_normalize() en python ou le json2csv package dans le nœud. valider avec le Formateur JSON Tout d'abord, et conservez le JSON d'origine - l'aplatissement du CSV est à sens unique.


Pourquoi avez-vous besoin de CSV alors que vous avez déjà JSON ?

Parce que les personnes qui ont besoin de vos données ne vivent pas dans votre terminal. Chaque demande de conversion que j'ai reçue est réduite à l'une des cinq situations :

Les analystes travaillent dans des tableurs. Excel, Google Sheets, Tableau, Power BI - ils inspirent tous du CSV natif et s'étouffent avec le JSON imbriqué. La conversion de la sortie de l'API en CSV est la façon dont les données d'ingénierie atteignent le côté commercial.

Bases de données Importer des fichiers plats en bloc. PostgreSQL COPY et mysql LOAD DATA Vous voulez une entrée tabulaire. Les colonnes JSON existent, mais le chargement dans de vraies tables relationnelles signifie d'abord s'aplatir.

Les migrations ont besoin d'une lingua franca. Déplacement des données entre un magasin NoSQL et une plateforme relationnelle, ou entre deux plates-formes SaaS, CSV est le format que les deux bouts comprennent de manière fiable.

La conformité aime les fichiers plats. Certaines exigences d'archivage spécifient des formats lisibles par l'homme. Un CSV s'ouvre dans n'importe quoi, dans des décennies.

Les parties prenantes ne peuvent pas lire JSON. Un chef de produit demandant "puis-je obtenir cela comme feuille de calcul ?" est le déclencheur le plus courant. C'était le déclencheur de mon bouton d'exportation cassé.

Diagram showing JSON data flowing through conversion to CSV format with use cases branching to spreadsheets, databases, and analytics


Qu'est-ce qui rend la conversion JSON-CSV difficile ?

Le JSON plat est trivial. ceci :

[
  {"id": 1, "name": "Alice", "email": "[email protected]", "age": 30},
  {"id": 2, "name": "Bob", "email": "[email protected]", "age": 25}
]

devient ceci, les clés des en-têtes, les éléments des lignes :

id,name,email,age
1,Alice,[email protected],30
2,Bob,[email protected],25

Mais les réponses réelles à l'API ne sont jamais plates. Ils ressemblent à ceci :

[
  {
    "id": 1,
    "name": "Alice",
    "address": {"street": "123 Main St", "city": "San Francisco", "state": "CA"},
    "skills": ["JavaScript", "Python", "Go"]
  }
]

CSV n'a aucun concept de "à l'intérieur". Vous choisissez donc une stratégie d'aplatissement, et chacun a un coût :

Aplatissement par notation des points — Les clés imbriquées deviennent des en-têtes composés :

id,name,address.street,address.city,address.state,skills
1,Alice,123 Main St,San Francisco,CA,"JavaScript; Python; Go"

Colonnes indexées pour les tableauxskills.0, skills.1, skills.2. Prévisible, mais un record avec 14 compétences produit 14 colonnes pour tout le monde.

Cellules codées JSON — Farcir le JSON brut dans la cellule, à double guillemet. Sans perte, illisible, et cela rend les analystes tristes.

La notation par points avec des tableaux joints est la bonne valeur par défaut pour la consommation humaine - c'est ce que le Convertisseur Toolz.dev produit. Les colonnes indexées gagnent lorsque le code en aval nécessite chaque élément adressable. JSON-In-Cells est un dernier recours pour l'aller-retour.


Méthode 1 : Comment convertir JSON en CSV en ligne ?

Idéal pour : Conversions uniques, non-développeurs, tout ce qui est inférieur à quelques dizaines de Mo.

  1. Ouvrez le Convertisseur JSON en CSV.
  2. Collez votre JSON — un tableau d'objets ou un seul objet.
  3. L'outil détecte la structure, aplatit les objets imbriqués en points et rend le CSV instantanément.
  4. copiez-le ou téléchargez le .csv.

La raison pour laquelle je par défaut sur un script pour tout ce qui n'est pas récurrent : une configuration zéro, une évasion correcte de la RFC 4180 (appréciée cette leçon), une union de clé automatique sur des objets incohérents et, parce que c'est côté client, la réponse de l'API remplie d'e-mails de clients que vous venez de coller. Regardez l'onglet du réseau si vous ne me croyez pas ; c'est le test que j'applique à chaque convertisseur en ligne, et la plupart échouent.

Là où ce n'est pas le mauvais outil : des conversions récurrentes (script) et une nidification profondément pathologique où vous voudrez choisir la stratégie d'aplatissement.

Diagram of the toolz.dev JSON to CSV converter showing JSON input on the left and CSV output on the right


Méthode 2 : Comment convertir JSON en CSV en JavaScript ?

Idéal pour : Créez des pipelines, des services de nœuds, une logique de transformation personnalisée.

Voici la version correcte minimale - notez l'échappement, qui est la partie que mon désastre de trois jours a sautée :

function jsonToCsv(jsonArray) {
  if (!jsonArray.length) return "";

  const headers = Object.keys(jsonArray[0]);
  const csvRows = [
    headers.join(","),
    ...jsonArray.map(row =>
      headers.map(header => {
        const value = row[header] ?? "";
        // RFC 4180: double embedded quotes, wrap anything containing , " or newline
        const escaped = String(value).replace(/"/g, '""');
        return /[,"\n\r]/.test(escaped) ? `"${escaped}"` : escaped;
      }).join(",")
    )
  ];

  return csvRows.join("\n");
}

Pour les entrées imbriquées, aplatissez d'abord et Union les clés - prendre les en-têtes uniquement du premier objet est le deuxième bug le plus courant dans les convertisseurs roulés à la main :

function flattenObject(obj, prefix = "") {
  const result = {};
  for (const [key, value] of Object.entries(obj)) {
    const newKey = prefix ? `${prefix}.${key}` : key;
    if (value && typeof value === "object" && !Array.isArray(value)) {
      Object.assign(result, flattenObject(value, newKey));
    } else if (Array.isArray(value)) {
      result[newKey] = value.join("; ");
    } else {
      result[newKey] = value;
    }
  }
  return result;
}

function nestedJsonToCsv(jsonArray) {
  const flattened = jsonArray.map(item => flattenObject(item));
  // Union of ALL keys, not just the first object's
  const headers = [...new Set(flattened.flatMap(Object.keys))];
  // ...then emit rows exactly as in jsonToCsv above
}

ou sauter le roulement à la main - le json2csv Le package gère ces bords depuis des années :

import { Parser } from "json2csv";

const parser = new Parser({ flatten: true });
const csv = parser.parse(data);

Méthode 3 : Comment convertir JSON en CSV en Python ?

Idéal pour : Flux de travail de la science des données, tout ce qui touche déjà les pandas.

Le one-liner Pandas couvre le JSON plat :

import pandas as pd

df = pd.read_json("data.json")
df.to_csv("output.csv", index=False)

La fonction véritablement utile est pd.json_normalize() — Construit à cet effet pour les réponses des API imbriquées :

import pandas as pd
import requests

response = requests.get("https://api.example.com/users")
df = pd.json_normalize(response.json())
print(df.columns.tolist())
# ['id', 'name', 'skills', 'address.street', 'address.city', 'address.state']

# Arrays still need a decision — join them explicitly:
df["skills"] = df["skills"].apply(lambda x: "; ".join(x) if isinstance(x, list) else x)
df.to_csv("output.csv", index=False)

Notez que json_normalize Aplatit niché objets Mais part tableaux Comme la liste Python, si vous sautez l'étape de jointure, vos cellules CSV contiennent ['JavaScript', 'Python'] Verbatim. Tout le monde frappe ça une fois.

Pas de pandas disponibles ? La bibliothèque standard gère bien la plate-forme JSON :

import json, csv

with open("data.json") as f:
    data = json.load(f)

with open("output.csv", "w", newline="") as f:
    writer = csv.DictWriter(f, fieldnames=data[0].keys())
    writer.writeheader()
    writer.writerows(data)

Méthode 4 : Comment convertir JSON en CSV à partir de la ligne de commande ?

Idéal pour : Scripts shell, pipelines CI, serveurs où l'installation de Pandas est exagérée.

jq Est-ce qu'il est nativement avec @csv, qui s'échappe correctement :

cat data.json | jq -r '
  (.[0] | keys_unsorted) as $keys |
  ($keys | @csv),
  (.[] | [.[$keys[]]] | @csv)
'

csvkit's in2csv est l'option peu réfléchie :

pip install csvkit
in2csv data.json > output.csv

et Miller (mlr) brille lorsque vous souhaitez filtrer dans le même pass :

mlr --json2csv filter '$age > 25' data.json > output.csv

La composabilité est le point — curl -s api.example.com/data | jq ... > report.csv est un pipeline API-Spreadsheet complet dans une seule ligne de cron.


Méthode 5 : pouvez-vous importer JSON directement dans Excel ou Google Sheets ?

Idéal pour : Non-développeurs, données rafraîchissantes en direct, importations ponctuelles.

Excel : Données → Obtenir des données → depuis le Web, coller l'URL de l'API et Power Query vous donne un éditeur visuel pour développer les enregistrements imbriqués avant le chargement. Vraiment bon pour les rafraîchissements répétés de la même source.

Fiches Google : Extensions → Apps Script, puis une petite fonction de récupération :

function importJSON(url) {
  const response = UrlFetchApp.fetch(url);
  const data = JSON.parse(response.getContentText());
  if (!Array.isArray(data) || data.length === 0) return [["No data"]];
  const headers = Object.keys(data[0]);
  const rows = data.map(item => headers.map(h => item[h] ?? ""));
  return [headers, ...rows];
}

utilisé dans une cellule comme =importJSON("https://api.example.com/data").

Take honnête : pour les importations ponctuelles, convertir avec le Outil en ligne Et l'ouverture du CSV est plus rapide que l'un ou l'autre. Les itinéraires natifs de la feuille de calcul ne gagnent leur coût d'installation que lorsque les données sont actualisées selon un calendrier.


Quelle méthode choisir ?

méthode installation JSON imbriqué Utilisation récurrente Les données restent locales
Convertisseur en ligne nul automatique manuel à chaque fois Oui — Côté client
Javascript / JSON2CSV installation npm par flatten excellent oui
Python / Pandas installation pip json_normalize excellent oui
JQ / CSVKIT / MLR Gestionnaire de packages Chemins manuels Excellent (cron/ci) oui
Excel / Feuilles Compte/application Interface utilisateur de la requête Power Bon (rafraîchissement automatique) Excel : Oui ; Feuilles : serveurs Google

Ma règle : recherchez l'outil de navigation jusqu'à la troisième fois que je convertis la même forme de données, puis cela devient un script.


Quels cas de bord cassent la conversion JSON-CSV ?

Quatre pièges représentent presque toutes les exportations cassées que j'ai déboguées :

Clés incohérentes. L'objet 1 a email, l'objet 2 a phone, l'objet 3 a les deux. Prenez les en-têtes du premier objet uniquement et vous supprimez silencieusement des données. Le correctif est une union clé sur tous les objets, avec des valeurs manquantes comme cellules vides, ce que les bons outils font automatiquement.

Caractères spéciaux non échappés. Le "smith, Jones & Partenaires" problème. Par RFC 4180 : envelopper les valeurs contenant des virgules, des devis ou des nouvelles lignes entre guillemets et doubler les devis intégrés ("He said ""hello""").

gros fichiers. Au-delà de 100 Mo, l'analyse par fichier entier devient douloureuse. Diffusez plutôt - jq Les flux, les Pandas sont en cours de lecture et le format de lignes JSON (un objet par ligne) facilite les deux. Pour les fichiers jusqu'à quelques dizaines de Mo, l'outil de navigation est correct car il n'y a pas de téléchargement.

Encodage. Les noms et adresses portent des caractères non ASCII. Gardez tout de bout en bout UTF-8 et méfiez-vous d'Excel sur Windows, qui souhaitait historiquement qu'une nomenclature détecte UTF-8 correctement.

Et une pratique qui n'est pas facultative : Validez avant de convertir. Un fichier JSON tronqué échoue de manière confuse à mi-conversion, mais évidemment dans le Formateur JSON. Trente secondes de validation bat dix minutes de "pourquoi mon CSV est-il vide".


Questions fréquentes

Comment convertir gratuitement JSON en CSV en ligne ?

Collez votre JSON dans le Convertisseur JSON en CSV sur Toolz.dev — Il génère instantanément du CSV avec des objets imbriqués aplatis et s'échappant, puis vous permet de copier ou de télécharger le résultat. Aucune inscription et le traitement est 100% côté client, de sorte que vos données ne quittent jamais votre navigateur.

Puis-je convertir JSON imbriqué en CSV ?

Oui. Les objets imbriqués s'aplatissent sur des en-têtes de notation de points (address.city), et les tableaux sont soit joints à une chaîne délimitée, soit divisés en colonnes indexées. le Convertisseur Toolz.dev Applique la notation par points automatiquement; en Python, pd.json_normalize() fait de même.

Comment convertir un fichier JSON en CSV en Python ?

import pandas as pd; pd.read_json("data.json").to_csv("output.csv", index=False) Pour JSON plat. Pour les structures imbriquées, utilisez pd.json_normalize(data) Tout d'abord, n'oubliez pas de joindre vous-même les colonnes du tableau, car la normalisation des feuilles est intacte.

Quel est le meilleur moyen de convertir des fichiers JSON très volumineux ?

Diffusez plutôt que de charger : jq Sur la ligne de commande, ou pandas avec des lectures en morceaux. La conversion du fichier en lignes JSON (un objet par ligne) rend d'abord la diffusion en continu beaucoup plus simple. Les outils du navigateur sont confortables jusqu'à quelques dizaines de Mo; au-delà de ~100 Mo, utilisez la ligne de commande.

Comment reconvertir CSV en JSON ?

le Convertisseur CSV en JSON Inverse le trajet — Chaque ligne devient un objet saisi par la ligne d'en-tête. Programmatiquement : pd.read_csv("data.csv").to_json(orient="records").

Pourquoi mon CSV a-t-il des devis autour de certaines valeurs ?

C'est un comportement correct, pas un bug. La RFC 4180 nécessite des guillemets doubles autour de n'importe quelle valeur contenant des virgules, des nouvelles lignes ou des devis, avec des devis intégrés doublés. Les feuilles de calcul et les analyseurs les stripent sur Read.

La conversion JSON-CSV est-elle sans perte ?

Pour JSON plat, oui. Pour les JSON imbriqués, les valeurs survivent mais la hiérarchie ne le fait pas - les en-têtes de notation de points sont aplatis interprétation, et vous ne pouvez pas toujours reconstruire la nidification exacte d'origine. Conservez le JSON source ; traitez le CSV comme une vue dérivée.

Pourquoi mes colonnes sont-elles mal alignées après la conversion ?

Presque toujours un échec d'évasion : une valeur contenant une virgule n'a pas été citée, de sorte que les analyseurs voient des colonnes supplémentaires à partir de ce point. C'est le bogue exact de mon bouton d'exportation Laravel. Utilisez un convertisseur qui implémente la RFC 4180 plutôt que des valeurs de jonction de chaînes - et si vous avez écrit le vôtre, testez-le avec une valeur comme Smith, Jones & Partners.

Comment convertir JSON en CSV dans Excel ou Google Sheets ?

Les deux applications importent JSON via un assistant plutôt qu'un collage. Dans Excel, utilisez les données → Obtenir des données → à partir du fichier → de JSON, puis aplatissez la requête dans Power Query et fermez et chargez. Dans Google Sheets, collez de petits tableaux dans un script d'applications temporaires ou convertissez-les avec le Convertisseur JSON en CSV Tout d'abord, ouvrez le fichier résultant - généralement le chemin le plus rapide pour un ponctuel.

Quelle méthode JSON à CSV dois-je utiliser ?

Pour un ponctuel rapide, un convertisseur côté client est le plus rapide et conserve les données privées. Pour les pipelines répétables, utilisez Python avec Pandas ; pour les fichiers énormes, diffusez avec jq sur la ligne de commande, et recherchez l'importation de la feuille de calcul uniquement lorsque les non-développeurs possèdent le flux de travail. Faites correspondre l'outil à la fréquence à laquelle vous répéterez le travail, pas à la taille du fichier.


Associez la méthode au travail

JSON-to-CSV ressemble à une seule ligne résolue jusqu'à ce qu'une virgule dans un nom d'entreprise décale 340 lignes de données client d'une colonne vers la droite. La méthode compte moins que le respect du format : évasion selon la RFC 4180, unissez vos clés, décidez exprès de votre stratégie d'aplatissement et conservez le JSON d'origine.

Pour la prochaine conversion ponctuelle, la Convertisseur JSON en CSV est le chemin de quinze secondes. valider d'abord avec le Formateur JSON, et lorsque les données doivent revenir, le Convertisseur CSV en JSON Ferme la boucle - les trois de votre navigateur, aucun d'entre eux n'a jamais vu vos données côté serveur.


Articles connexes :

Frequently Asked Questions

Paste your JSON into the JSON to CSV Converter on toolz.dev — it instantly generates CSV with nested objects flattened and escaping handled, then lets you copy or download the result. No signup, and processing is 100% client-side, so your data never leaves your browser.

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!