JSON vers CSV

Convertir un tableau JSON au format CSV

Fonctionne localement · Sûr pour coller des secrets
Le CSV apparaîtra ici…

Qu'est-ce que la conversion JSON vers CSV ?

La conversion JSON vers CSV transforme des données structurées du format JSON en valeurs séparées par des virgules, un format tabulaire que les tableurs, bases de données et outils d'analyse consomment nativement. JSON stocke les données sous forme d'objets imbriqués et de tableaux sans schéma fixe. CSV stocke les données en lignes et colonnes, avec une ligne d'en-tête définissant les noms de champs. La conversion est le passage obligé pour faire transiter des données d'API vers des tableurs et des bases de données.

CSV (Comma-Separated Values) est défini par RFC 4180. Chaque ligne correspond à un enregistrement, et les champs d'une ligne sont séparés par un caractère délimiteur, le plus souvent une virgule. Les champs contenant le délimiteur, des guillemets doubles ou des sauts de ligne doivent être encadrés de guillemets doubles, avec les guillemets internes échappés en les doublant. Cet échappement est la principale source de bugs lors de l'écriture manuelle d'un convertisseur JSON vers CSV.

La conversion est directe lorsque l'entrée est un tableau plat d'objets aux clés cohérentes. Chaque objet devient une ligne, et chaque clé unique devient un en-tête de colonne. Les objets et tableaux imbriqués nécessitent une étape d'aplatissement, et des clés incohérentes entre objets demandent une stratégie pour gérer les champs manquants — généralement en laissant la cellule vide. Un convertisseur fiable gère automatiquement tous ces cas limites.

Pourquoi convertir JSON en CSV ?

Les API renvoient du JSON, mais les tableurs, bases de données SQL et outils de BI attendent des données tabulaires. Convertir JSON en CSV permet de déplacer des données entre ces systèmes sans écrire de scripts d'import personnalisés.

Conversion instantanée dans le navigateur
Collez votre JSON et téléchargez le fichier immédiatement. Pas d'envoi vers un serveur, pas de limites de taille liées à des API externes, pas d'attente pour des files de traitement.
🔒
Traitement axé sur la confidentialité
Vos données restent dans votre navigateur. La conversion s'exécute entièrement en JavaScript sur votre appareil. Les exports de bases de données, les données utilisateurs et les données financières ne quittent jamais votre machine.
🔀
Prise en charge de plusieurs délimiteurs
Choisissez entre virgule, point-virgule, tabulation ou pipe comme délimiteur. Utilisez des points-virgules pour les tableurs avec paramètres régionaux européens, des tabulations pour les fichiers TSV, ou des pipes pour les imports vers des systèmes legacy.
📋
Sans compte ni installation
Ouvrez la page et convertissez. Pas d'inscription, pas de clé d'API, pas d'outil CLI à installer. Fonctionne sur n'importe quel appareil avec un navigateur moderne.

Cas d'utilisation JSON vers CSV

Export de données d'API vers les tableurs
Les API REST renvoient du JSON. Les chefs de produit et les analystes ont besoin de ces données dans Excel ou Google Sheets. Convertissez la réponse de l'API en CSV et ouvrez-la directement dans n'importe quelle application tableur.
Import en masse dans les bases de données
PostgreSQL COPY, MySQL LOAD DATA et SQLite .import acceptent tous du CSV. Convertissez votre jeu de données au format tabulaire pour un chargement en masse rapide sans écrire de script d'import personnalisé.
Prototypage de pipelines ETL
Les pipelines ETL ont souvent des sorties intermédiaires difficiles à inspecter en JSON brut. Convertissez la sortie d'une étape en CSV et ouvrez-la dans un tableur pour vérifier les transformations avant de câbler le pipeline complet.
Préparation de données de test QA
Les ingénieurs QA génèrent des fixtures de test en JSON, mais beaucoup de frameworks de test et d'outils de test piloté par les données acceptent du CSV pour les entrées de tests paramétrés. Convertissez les fixtures en CSV sans reformatage manuel.
Analyse de logs et rapports
Les logs JSON structurés issus d'applications et de services cloud peuvent être convertis en CSV pour import dans des outils de BI comme Tableau, Power BI ou Looker à des fins de visualisation et de reporting.
Traitement de données académiques
Les étudiants et chercheurs qui travaillent avec des API de données ouvertes reçoivent des réponses JSON. La conversion en CSV permet l'analyse dans R, pandas, SPSS ou Excel sans écrire de code de parsing.

Référence des délimiteurs CSV

Le caractère délimiteur sépare les champs au sein de chaque ligne. La virgule est la plus courante, mais d'autres délimiteurs sont standards dans des contextes spécifiques. Choisir le mauvais délimiteur provoque la fusion ou le découpage incorrect des champs à l'ouverture du fichier.

DélimiteurCaractèreExtensionQuand l'utiliser
Comma,.csvDefault for most spreadsheets and databases
Semicolon;.csvStandard in locales where comma is a decimal separator (DE, FR, BR)
Tab\t.tsvAvoids escaping when field values contain commas or semicolons
Pipe|.csvUsed in fixed-width legacy systems and some ETL pipelines

Gestion du JSON imbriqué dans CSV

CSV est un format plat sans moyen natif de représenter des objets ou tableaux imbriqués. Lorsque votre JSON contient des structures imbriquées, le convertisseur doit les aplatir en colonnes. Il existe plusieurs stratégies, et le bon choix dépend de la façon dont le CSV sera consommé.

Aplatissement par notation pointée
Les clés imbriquées sont jointes par des points : {"address": {"city": "Paris"}} devient une colonne nommée address.city avec la valeur Paris. C'est l'approche la plus courante et elle fonctionne bien avec les outils prenant en charge les références de champs imbriqués.
Colonnes indexées pour les tableaux
Les tableaux sont développés en colonnes numérotées : {"tags": ["a", "b"]} devient tags.0 = a, tags.1 = b. Cela préserve toutes les valeurs mais crée de nombreuses colonnes lorsque les tableaux sont grands.
Repli sur chaîne JSON
Les valeurs imbriquées complexes sont sérialisées sous forme de chaînes JSON dans la cellule CSV : la cellule contient le texte JSON brut. Cela préserve la structure complète mais exige que le consommateur parse la valeur de la cellule.
Ignorer les champs imbriqués
Certains convertisseurs suppriment entièrement les objets et tableaux imbriqués, ne conservant que les champs scalaires (chaîne, nombre, booléen, null). Cela produit un CSV propre mais perd des données. Utile uniquement lorsque l'on sait que les champs imbriqués ne sont pas nécessaires.

Exemples de code

Convertir JSON en CSV par programme nécessite de gérer l'extraction des en-têtes, le guillemétage des champs et l'échappement des délimiteurs. La plupart des langages disposent d'un support natif ou de bibliothèques standard pour l'écriture CSV.

JavaScript (Node.js)
const data = [
  { name: "Alice", age: 30, city: "Berlin" },
  { name: "Bob", age: 25, city: "Tokyo" },
]

// Extract headers from the first object
const headers = Object.keys(data[0])
const csv = [
  headers.join(","),
  ...data.map(row => headers.map(h => {
    const val = String(row[h] ?? "")
    // Quote fields that contain commas, quotes, or newlines
    return val.includes(",") || val.includes('"') || val.includes("\n")
      ? '"' + val.replace(/"/g, '""') + '"'
      : val
  }).join(","))
].join("\n")

console.log(csv)
// → name,age,city
// → Alice,30,Berlin
// → Bob,25,Tokyo
Python
import json, csv, io

json_str = '[{"name":"Alice","age":30,"city":"Berlin"},{"name":"Bob","age":25,"city":"Tokyo"}]'
data = json.loads(json_str)

output = io.StringIO()
writer = csv.DictWriter(output, fieldnames=data[0].keys())
writer.writeheader()
writer.writerows(data)

print(output.getvalue())
# → name,age,city
# → Alice,30,Berlin
# → Bob,25,Tokyo
CLI (jq + Miller)
# Using jq to convert JSON array to CSV
echo '[{"name":"Alice","age":30},{"name":"Bob","age":25}]' | \
  jq -r '(.[0] | keys_unsorted) as $k | $k, (.[] | [.[$k[]]] ) | @csv'
# → "name","age"
# → "Alice",30
# → "Bob",25

# Using Miller (mlr) for streaming conversion
echo '[{"name":"Alice","age":30}]' | mlr --json --ocsv cat
# → name,age
# → Alice,30
Go
package main

import (
    "encoding/csv"
    "encoding/json"
    "fmt"
    "os"
)

func main() {
    jsonStr := `[{"name":"Alice","age":30},{"name":"Bob","age":25}]`
    var data []map[string]interface{}
    json.Unmarshal([]byte(jsonStr), &data)

    w := csv.NewWriter(os.Stdout)
    // Write header
    headers := []string{"name", "age"}
    w.Write(headers)
    // Write rows
    for _, row := range data {
        record := make([]string, len(headers))
        for i, h := range headers {
            record[i] = fmt.Sprintf("%v", row[h])
        }
        w.Write(record)
    }
    w.Flush()
    // → name,age
    // → Alice,30
    // → Bob,25
}

Questions fréquentes

Quelle structure JSON ce convertisseur attend-il ?
Le convertisseur attend un tableau JSON d'objets, comme [{"name":"Alice"},{"name":"Bob"}]. Chaque objet du tableau devient une ligne dans la sortie, et les clés des objets deviennent les en-têtes de colonnes. Un objet JSON unique (non encadré par un tableau) est traité comme un tableau d'une seule ligne.
Comment les objets et tableaux imbriqués sont-ils gérés ?
Les valeurs imbriquées sont aplaties par notation pointée. Par exemple, {"address":{"city":"Paris"}'} produit une colonne nommée address.city. Les tableaux sont développés en colonnes indexées (tags.0, tags.1). Cela préserve les données tout en maintenant une sortie plate.
Que se passe-t-il lorsque les objets ont des clés différentes ?
Le convertisseur collecte toutes les clés uniques de tous les objets du tableau et les utilise comme en-têtes de colonnes. Les objets manquant une clé obtiennent une cellule vide pour cette colonne. Aucune donnée n'est perdue, et l'ordre des colonnes suit l'ordre d'apparition des clés.
Puis-je utiliser un point-virgule ou une tabulation à la place de la virgule ?
Oui. L'outil prend en charge la virgule, le point-virgule, la tabulation et le pipe comme délimiteurs. Utilisez des points-virgules lorsque vos données ou paramètres régionaux utilisent la virgule comme séparateur décimal (courant dans les tableurs allemands, français et brésiliens). Utilisez des tabulations pour les fichiers TSV consommés par des outils Unix.
La conversion est-elle sans perte ?
Pour les tableaux JSON plats avec des valeurs scalaires cohérentes, oui. Le fichier de sortie contient les mêmes données et peut être reconverti en JSON identique. Pour les structures imbriquées, l'aplatissement modifie la forme des données. Les valeurs de tableaux sérialisées en colonnes indexées ou en chaînes JSON peuvent être reconstruites, mais l'aller-retour nécessite de connaître la structure originale.
Quelle taille de fichier JSON puis-je convertir ?
L'outil fonctionne dans votre navigateur et traite les données en mémoire — des fichiers jusqu'à 10–20 Mo se convertissent sans problème sur les appareils modernes. Pour des fichiers plus volumineux, utilisez un outil CLI comme jq, Miller, ou un script Python avec le module csv, qui traitent les données en flux.
Est-il sûr de coller des données sensibles dans cet outil ?
Oui. Tout le traitement s'effectue dans votre navigateur en JavaScript. Aucune donnée n'est envoyée à un serveur. Vous pouvez le confirmer en ouvrant les outils de développement de votre navigateur et en vérifiant l'onglet Réseau pendant la conversion.