Convertir un fichier JSON en CSV

Fonctionne sur votre appareil · Votre fichier ne quitte jamais votre appareil.

Déposez un fichier .json ou collez du JSON directement depuis la réponse d’une API, et obtenez un CSV à ouvrir dans Excel, Google Sheets ou n’importe quel écran d’import. Une liste au premier niveau donne une ligne par élément ; sinon, c’est la plus longue liste d’enregistrements du document qui est utilisée – {"results": [...], "count": 2} donne une ligne par résultat ; un objet qui ne contient aucune liste devient une seule ligne.

Les règles sont fixes, donc le résultat est prévisible : les objets imbriqués deviennent des colonnes séparées par des points (adresse.ville), une liste de valeurs simples est jointe par des points-virgules dans une seule cellule, et une liste d’objets à l’intérieur d’un enregistrement donne des colonnes numérotées (articles.0.nom). La ligne d’en-tête est l’union de toutes les clés rencontrées, dans l’ordre de première apparition ; un enregistrement à qui il manque un champ laisse simplement la cellule vide.

Le CSV suit la RFC 4180 – les champs contenant des virgules, des guillemets ou des retours à la ligne sont correctement entourés de guillemets – en UTF-8, avec un BOM facultatif pour qu’Excel affiche correctement toutes les écritures, les accents et les symboles. Une cellule qui commence par =, +, - ou @ reçoit une apostrophe devant, pour qu’un tableur l’affiche comme du texte au lieu de l’exécuter comme une formule. Vous voyez les 200 premières lignes avant de télécharger, et rien ne quitte votre appareil.

Comment Convertir un fichier JSON en CSV

  1. Déposez un fichier JSON, ou collez le JSON dans la zone de texte.
  2. Choisissez le séparateur de colonnes en sortie (virgule par défaut – point-virgule pour un Excel en français) et si vous voulez le BOM pour Excel.
  3. Cliquez sur « Convertir en CSV » et vérifiez l’aperçu des premières lignes.
  4. Téléchargez le .csv.

Formats pris en charge et limites

Entrée
JSON (.json) – fichier ou texte collé, UTF-8
Sortie
CSV, RFC 4180, UTF-8, fins de ligne CRLF, BOM facultatif
Imbrication
Objets → colonnes à points ; listes de valeurs → jointes par ;
Séparateur
Virgule, point-virgule, tabulation ou barre verticale
Où ça tourne
Dans votre navigateur – rien n’est envoyé

Ne convient pas pour : Un seul objet très imbriqué sans liste à l’intérieur – il se convertit, mais en une seule ligne très large plutôt qu’en tableau.

Quelle liste devient les lignes

Une liste au premier niveau donne directement les lignes. Sinon, l’outil parcourt le document, jusqu’à huit niveaux de profondeur, à la recherche de la plus longue liste d’objets. Ainsi, {"response": {"data": {"items": [...]}}} et {"results": [...], "count": 2, "next": null} donnent tous deux une ligne par élément, et la ligne sous le résultat nomme la liste utilisée, par exemple results. Les valeurs posées à côté de cette liste, comme count et next, n’appartiennent à aucun enregistrement et sont laissées de côté.

Entre deux listes de même longueur, la plus proche du sommet l’emporte. Pour une liste plus courte, copiez-la de son [ à son ] et collez-la seule. Un document sans liste d’objets devient une seule ligne, et les enveloppes à clé unique sont sautées : {"order": {"id": 7, "total": 12}} donne les colonnes id et total.

Comment les valeurs s’écrivent dans les cellules

Le texte est recopié exactement, dates comprises : elles restent sous la forme que leur donne le JSON, comme 2024-01-05T10:00:00Z. true et false sont écrits en toutes lettres. null, une liste vide et un objet vide donnent tous une cellule vide : dans le CSV, ils ressemblent donc à un champ absent.

Un nombre est écrit exactement comme dans le JSON : 1.0 reste 1.0, 1e21 reste 1e21, et un identifiant comme 12345678901234567890 garde tous ses chiffres, même sans guillemets. Un lecteur JSON ordinaire transformerait cet identifiant en 12345678901234567000.

Listes de listes, et clés qui contiennent déjà un point

Une liste de listes est ouverte sur un niveau : "m": [[1, 2], [3]] donne une colonne m.0 contenant 1;2 et une colonne m.1 contenant 3. Une liste qui mélange objets et valeurs simples numérote chaque entrée : "x": [{"z": 1}, 2] donne x.0.z et x.1.

Les noms de colonnes sont formés en joignant les clés par des points : une clé qui contient déjà un point peut donc rencontrer une clé imbriquée. {"a.b": 1, "a": {"b": 2}} produirait deux fois a.b. La seconde reçoit un suffixe : les colonnes sont a.b et a.b_2, et les deux valeurs sont gardées.

Choisir le séparateur, et les cellules qui commencent par =

La virgule est le choix habituel. Le point-virgule convient à un tableur réglé dans une langue qui écrit les décimales avec une virgule, comme le français : un fichier séparé par des virgules s’y ouvre souvent dans une seule colonne. La tabulation et la barre verticale servent aux systèmes qui les réclament. Quel que soit le séparateur, le fichier porte l’extension .csv.

Une cellule qui commence par =, +, - ou @ est une formule pour un tableur, qui l’exécuterait à l’ouverture. Une telle cellule reçoit une apostrophe devant, la marque que les tableurs utilisent eux-mêmes pour dire « ceci est du texte » : =1+1 est écrit '=1+1. Les nombres simples comme -5 ou +3.5 restent tels quels.

Questions fréquentes

Mes fichiers sont-ils envoyés sur un serveur ?
Non. La conversion se fait entièrement dans votre navigateur, avec la puissance de votre propre appareil. Le fichier ne quitte pas votre ordinateur ni votre téléphone. Et une fois qu’un outil a servi une première fois, il continue de fonctionner sans connexion (la vidéo, la reconnaissance de texte et la suppression d’arrière-plan téléchargent leur moteur depuis ce site la première fois).
Que deviennent les objets et tableaux imbriqués ?
Un objet imbriqué est aplati en colonnes à points : {"adresse":{"ville":"Lyon"}} devient une colonne nommée adresse.ville. Une liste de valeurs simples ("tags": ["a","b"]) est écrite a;b dans une cellule. Une liste d’objets dans un enregistrement donne des colonnes numérotées, par exemple articles.0.nom, articles.1.nom.
Mon JSON est un objet, pas une liste – qu’est-ce que j’obtiens ?
La plus longue liste d’enregistrements qu’il contient, où qu’elle soit, devient les lignes – {"results": [...], "count": 2, "next": null} donne une ligne par résultat – et la ligne de résultat nomme la liste utilisée. Les valeurs posées à côté de cette liste n’appartiennent à aucun enregistrement et sont laissées de côté. Un objet qui ne contient aucune liste est écrit sur une seule ligne, avec une colonne par clé.
Excel affiche des caractères bizarres : comment corriger ?
Excel devine l’encodage, sauf si le fichier commence par un BOM. L’option « Ajouter un BOM pour Excel » est activée par défaut et ajoute ce marqueur de trois octets ; désactivez-la pour les outils qui exigent de l’UTF-8 pur.

Outils associés

Plus dans Tableurs et données

Cette page dans d’autres langues: English · العربية · Deutsch · Español · Русский · Português · 中文 · हिन्दी · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia · বাংলা