Convertir JSON en CSV est l'une des transformations de donnees les plus courantes. Ce guide couvre cinq methodes : outils en ligne, Python pandas, JavaScript/Node.js, jq et Excel Power Query.
Convertissez JSON en CSV avec notre outil gratuit.
Pourquoi convertir JSON en CSV ?
JSON est le format standard pour les API web, tandis que CSV est le format tabulaire universel pour les tableurs et les bases de donnees.
Scenarios courants : export de donnees API, preparation d'imports SQL, generation de rapports, migration de donnees entre systemes.
Le principal defi est l'aplatissement des structures imbriquees.
Methode 1 : Convertir en ligne
Les outils en ligne sont la solution la plus rapide :
Essayez notre convertisseur JSON-CSV gratuit.
- Selectionnez JSON vers CSV.
- Collez vos donnees JSON.
- Cliquez sur Convertir.
- Telelechargez le CSV.
Ideal pour les conversions ponctuelles. Les donnees restent dans votre navigateur.
Methode 2 : Python pandas
Python avec pandas est la methode la plus populaire :
import pandas as pd
import json
# === Method 1: Flat JSON array ===
# Read JSON file directly into a DataFrame
df = pd.read_json('data.json')
df.to_csv('output.csv', index=False)
# === Method 2: Nested JSON with json_normalize ===
with open('data.json', 'r') as f:
data = json.load(f)
# Flatten nested objects (e.g., user.address.city)
df = pd.json_normalize(data)
df.to_csv('output_flat.csv', index=False)
# === Method 3: Nested JSON with specific record_path ===
# For JSON like: {"results": [{"name": "A", "scores": [1,2]}]}
df = pd.json_normalize(
data,
record_path='items', # path to the array
meta=['id', 'name'], # fields from parent
meta_prefix='parent_',
sep='.' # separator for nested keys
)
df.to_csv('output_nested.csv', index=False)
# === Method 4: Handle missing fields ===
df = pd.json_normalize(data)
df.fillna('', inplace=True) # replace NaN with empty string
df.to_csv('output_clean.csv', index=False, encoding='utf-8-sig')pd.json_normalize() aplatit automatiquement les objets imbriques.
Sans pandas, utilisez les modules csv et json de Python :
import json
import csv
# Read JSON
with open('data.json', 'r') as f:
data = json.load(f)
# Write CSV using built-in modules
if isinstance(data, list) and len(data) > 0:
keys = data[0].keys() # column headers from first object
with open('output.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.DictWriter(f, fieldnames=keys)
writer.writeheader()
writer.writerows(data)
print(f"Converted {len(data)} rows to CSV")L'approche standard est legere et fonctionne pour les JSON plats.
Methode 3 : JavaScript / Node.js
JavaScript est un choix naturel pour le JSON :
// === Browser: Convert JSON array to CSV string ===
function jsonToCsv(jsonData) {
if (!Array.isArray(jsonData) || jsonData.length === 0) return '';
const headers = Object.keys(jsonData[0]);
const csvRows = [
headers.join(','), // header row
...jsonData.map(row =>
headers.map(header => {
const value = row[header] ?? '';
// Escape quotes and wrap in quotes if needed
const str = String(value);
return str.includes(',') || str.includes('"') || str.includes('\n')
? `"${str.replace(/"/g, '""')}"`
: str;
}).join(',')
)
];
return csvRows.join('\n');
}
// Usage
const data = [
{ name: "Alice", age: 30, city: "NYC" },
{ name: "Bob", age: 25, city: "London" }
];
const csv = jsonToCsv(data);
console.log(csv);
// === Node.js: Read JSON file, write CSV file ===
const fs = require('fs');
const data = JSON.parse(fs.readFileSync('data.json', 'utf-8'));
const csv = jsonToCsv(data);
fs.writeFileSync('output.csv', csv, 'utf-8');
// === Using json2csv package (recommended for production) ===
// npm install json2csv
const { parse } = require('json2csv');
const opts = {
fields: ['name', 'age', 'address.city'], // dot notation for nested
flatten: true,
defaultValue: ''
};
const csvOutput = parse(data, opts);
fs.writeFileSync('output.csv', csvOutput);Pour la production, utilisez le package npm json2csv.
L'approche Node.js lit le JSON, extrait les en-tetes et ecrit le CSV.
Methode 4 : jq (ligne de commande)
jq est un processeur JSON en ligne de commande :
# === Basic: Flat JSON array to CSV ===
# Input: [{"name":"Alice","age":30},{"name":"Bob","age":25}]
jq -r '(.[0] | keys_unsorted) as $keys |
($keys | @csv),
(.[] | [.[$keys[]]] | @csv)' data.json > output.csv
# === Select specific fields ===
jq -r '["name","age","city"],
(.[] | [.name, .age, .city]) | @csv' data.json
# === Handle nested objects with dot notation ===
jq -r '["name","street","city"],
(.[] | [.name, .address.street, .address.city]) | @csv' data.json
# === Handle arrays by joining elements ===
jq -r '["name","tags"],
(.[] | [.name, (.tags | join(";"))]) | @csv' data.json
# === Pipe from curl (API response to CSV) ===
curl -s "https://api.example.com/users" | \
jq -r '(.[0] | keys_unsorted) as $k |
($k | @csv), (.[] | [.[$k[]]] | @csv)' > users.csvLe filtre @csv gere l'echappement CSV correct.
Pour des transformations complexes, jq supporte variables et conditions.
Methode 5 : Excel Power Query
Power Query offre une approche visuelle sans code :
- Donnees > Obtenir des donnees > A partir de JSON.
- Expandre les colonnes imbriquees.
- Enregistrer en CSV.
Power Query memorise les etapes de transformation.
Gestion du JSON imbrique
Le plus grand defi est l'aplatissement des structures imbriquees :
Notation par points : Les cles imbriquees sont jointes avec des points.
Gestion des tableaux : Joindre les elements, creer des lignes separees ou des colonnes numerotees.
Extraction selective : Extraire uniquement les champs necessaires.
Comparaison des methodes
| Methode | Ideal pour | Imbrication | Installation |
|---|---|---|---|
| En ligne | Conversions rapides | Auto | Aucune |
| Python | Data science | Excellent | pip install pandas |
| JavaScript | Apps web | Bon | npm install json2csv |
| jq | Scripts shell | Manuel | brew install jq |
| Excel | Utilisateurs business | Visuel | Excel |
Conseils pour une conversion propre
Bonnes pratiques :
Inspectez la structure JSON d'abord.
Gerez les champs manquants.
Attention aux caracteres speciaux.
Choisissez le bon delimiteur.
Preservez les types de donnees.
Questions frequemment posees
Comment convertir JSON en CSV en ligne ?
Utilisez le convertisseur CSV-JSON de DevToolBox. Collez vos donnees JSON, cliquez sur Convertir et telechargez le CSV.
Excel peut-il ouvrir des fichiers JSON ?
Oui, avec Power Query : Donnees > Obtenir des donnees > A partir de JSON.
Comment convertir du JSON imbrique en CSV ?
Utilisez pandas json_normalize(), jq avec des filtres, ou un outil en ligne avec aplatissement automatique.
Quelle est la meilleure bibliotheque Python ?
pandas avec json_normalize() et read_json().
Peut-on convertir de gros fichiers JSON (1 Go+) ?
Oui, avec des approches streaming : ijson en Python, JSONStream en Node.js, jq --stream.
Convertir JSON en CSV est une competence fondamentale. Utilisez l'outil en ligne pour des conversions rapides, Python pour l'automatisation, jq pour le terminal.
Convertissez JSON en CSV avec notre outil gratuit.
Related Developer Tools and Guides
- CSV-JSON Converter - Convert between CSV and JSON formats instantly
- JSON Formatter - Format and beautify JSON data with syntax highlighting
- JSON Viewer - Interactive tree-view JSON explorer
- JSON to TypeScript - Generate TypeScript interfaces from JSON
- JSON to Excel - Convert JSON data to Excel spreadsheets
- XML to JSON - Convert XML to JSON format
- JSON to YAML - Convert between JSON and YAML
- JSON Validator - Validate JSON syntax and find errors
- JSON to Go - Create Go structs from JSON data