Aller au contenu

Convertir du JSON en CSV

Transformez réponses d'API, exports et JSON Lines en un CSV qui s'ouvre proprement dans Excel — les enregistrements trouvés pour vous, les champs imbriqués aplatis en colonnes lisibles, et les grands identifiants conservés chiffre pour chiffre.

  • Jamais conservé
  • Pas de file d'attente, pas d'attente
  • Sans inscription, sans filigrane

Comment ça marche

1

Ajoutez du JSON

Déposez un fichier .json ou .jsonl, ou collez le JSON directement dans la zone de texte.

2

Choisissez les enregistrements

La liste des enregistrements est trouvée automatiquement, même au fin fond de data.items. Choisissez comment écrire les tableaux et vérifiez l'aperçu.

3

Téléchargez

Un CSV avec le séparateur et l'encodage qu'il vous faut, prêt pour Excel, Google Sheets ou une base de données.

Aplatir un arbre en grille

Le JSON est un arbre et le CSV un rectangle, et toute la conversion consiste à passer de l'un à l'autre. Le cas simple est un tableau d'objets qui partagent tous les mêmes clés — chaque objet est une ligne, chaque clé une colonne, et rien n'est perdu. C'est à cela que ressemblent la plupart des réponses d'API et des exports, et c'est pourquoi la conversion fonctionne généralement sans effort. Toutes les difficultés viennent des documents qui n'ont pas cette forme.

Les objets imbriqués sont aplatis en joignant leurs clés : un objet adresse à l'intérieur d'un client devient des colonnes comme address.city et address.postcode — une convention que tous les tableurs gèrent et qu'aucun standard ne définit. Les clés présentes dans certains objets et pas dans d'autres deviennent des colonnes vides dans les lignes qui ne les avaient pas, et c'est la bonne réponse : l'alternative serait d'abandonner les données que seuls certains enregistrements portent.

Les tableaux imbriqués sont là où une grille ne peut vraiment pas suivre. Un enregistrement contenant trois lignes de commande est une ligne qui contient une liste, pas trois lignes — le transformer en trois dupliquerait tous les autres champs et changerait discrètement le sens des données. Un seul tableau d'objets est donc développé en lignes, et les autres sont écrits en texte dans leur cellule. Si ce qu'il vous faut, ce sont les lignes de commande plutôt que les commandes, pointez la conversion sur ce tableau-là ; un arbre avec deux listes côte à côte n'a pas de rectangle correct unique, et choisir est une décision que vous seul pouvez prendre.

Deux détails piquent à la sortie. Les valeurs contenant une virgule, un guillemet ou un saut de ligne sont mises entre guillemets pour survivre — c'est du CSV correct, même si cela paraît étrange quand on inspecte le fichier brut. Et un long identifiant numérique devient un risque dès que le CSV arrive dans un tableur : Excel le lira comme un nombre, l'arrondira au-delà de quinze chiffres et supprimera tout zéro initial, un problème introduit par le tableur et non par la conversion.

Si vous cherchez autre chose

jq est le bon outil lorsque la forme doit être décidée plutôt que devinée : jq -r '.orders[] | [.id, .customer.name, .total] | @csv' choisit exactement les champs voulus, exactement au niveau voulu, ce qui est le contrôle qu'un aplatisseur automatique ne peut pas offrir. Il fonctionne aussi en flux, si bien que la taille du fichier cesse d'être une contrainte.

Pour les données imbriquées en général, Miller — mlr --ijson --ocsv flatten — et pandas.json_normalize en Python vous donnent un contrôle explicite sur la profondeur d'aplatissement et le traitement des listes. Et si le JSON est réellement hiérarchique plutôt que tabulaire, le convertir en CSV est peut-être une mauvaise idée d'emblée — une base de données ou un fichier JSON délimité par lignes conserve la structure qu'une grille s'apprête à perdre.

Questions fréquentes

Comment le JSON imbriqué devient-il des colonnes ?

Chaque champ imbriqué devient une colonne nommée d'après son chemin : {"address": {"city": "Oslo"}} donne une colonne address.city. Les colonnes apparaissent dans l'ordre de leur première occurrence dans vos données, pas par ordre alphabétique, et les enregistrements auxquels il manque un champ laissent simplement cette cellule vide.

Que deviennent les tableaux ?

C'est vous qui choisissez : joindre les valeurs dans une seule cellule ("red; green"), les répartir dans des colonnes numérotées (tags.0, tags.1), les garder en texte JSON, ou — pour un tableau d'objets comme des lignes de commande — écrire une ligne par élément en répétant les champs parents.

Les grands nombres sont-ils conservés exactement ?

Oui. Les identifiants au-delà de ce que JavaScript peut représenter — Twitter, Discord et identifiants de base de données 64 bits — sont copiés chiffre pour chiffre, là où la plupart des convertisseurs arrondissent en silence 1234567890123456789 en 1234567890123456800.

JSON Lines (NDJSON) est-il pris en charge ?

Oui. Un fichier contenant un objet JSON par ligne est reconnu automatiquement, et chaque ligne devient une ligne du CSV.

Et si mon JSON contient une erreur ?

Vous obtenez la ligne et la colonne exactes, le passage fautif mis en évidence, et une explication claire — par exemple une virgule finale, ou des apostrophes simples copiées depuis du code JavaScript.

Mes données sont-elles conservées quelque part ?

Non. Le JSON est lu et le CSV écrit ici ; rien n'est envoyé nulle part et rien n'est conservé.

Bon à savoir : Un seul tableau d'objets peut être développé en lignes à la fois ; les autres tableaux sont écrits dans leur cellule. Les très gros fichiers sont limités par la mémoire de votre navigateur.

Intégrez cet outil à votre site

Gratuit pour tout blog, page de cours ou article d'aide. Collez un seul extrait de code et vos visiteurs pourront l'utiliser directement sur votre page.