Convertisseur JSON → CSV, gratuit

Convertissez des tableaux JSON d'objets au format CSV ou TSV.

Comment utiliser

1. Collez un tableau JSON d'objets (ou un seul objet) dans la zone de saisie.

2. Choisissez votre séparateur · virgule pour CSV, tabulation pour TSV, ou un autre format.

3. Cliquez sur Convertir pour générer la sortie CSV.

4. Copiez dans le presse-papiers ou téléchargez sous forme de fichier.

Les objets et tableaux imbriqués sont sérialisés en chaînes JSON dans la sortie CSV. Tout le traitement est côté client · vos données ne quittent jamais votre navigateur.

Pourquoi la conversion JSON-vers-CSV est un workflow si fréquent

Le JSON est le format de payload dominant pour les API web modernes ; le CSV est le format de plus petit dénominateur commun pour les données tabulaires. Excel, Google Sheets, SQL LOAD DATA, R, Pandas, Tableau, Power BI et presque tout pipeline ETL ingèrent le CSV nativement. Donc dès qu'une sortie d'API doit atterrir dans une feuille de calcul pour un interlocuteur, ou dans une base de données pour analyse, il faut bien que quelqu'un aplatisse le JSON en lignes. Cet outil fait cet aplatissement dans votre navigateur, sans aller-retour serveur et sans téléversement de données potentiellement sensibles.

Le format CSV (RFC 4180)

Il n'existe pas de norme CSV formelle unique, mais la RFC 4180 (octobre 2005, « Common Format and MIME Type for Comma-Separated Values (CSV) Files ») est ce qui s'en approche le plus côté référence canonique. Les règles sur lesquelles tout le monde s'accorde :

Pourquoi quatre délimiteurs au lieu d'un

La virgule est le défaut, mais chaque délimiteur résout un problème particulier :

Aplatir du JSON imbriqué : trois stratégies

Le JSON est hiérarchique ; le CSV est plat. Il n'y a pas de mapping généraliste sans perte entre les deux. Quand l'entrée contient des objets ou tableaux imbriqués, tout convertisseur doit faire un choix :

  1. Inlining sous forme de chaîne JSON. La portion imbriquée est resérialisée en JSON et placée dans une seule cellule CSV. C'est l'approche par défaut de cet outil. Sans perte ; aller-retour sûr ; le consommateur devra parser le JSON interne s'il veut la structure.
  2. Aplatissement à clés pointées. {address: {street, city}} devient les colonnes address.street et address.city. Le json_normalize de Pandas fonctionne ainsi. Plus propre pour les analystes mais le nombre de colonnes explose pour les données très imbriquées.
  3. Explosion en lignes. Un tableau devient plusieurs lignes, avec les champs parents répétés. {name: "Alice", tags: ["a", "b"]} devient deux lignes, toutes deux avec name=Alice. Le meilleur pour les relations un-à-plusieurs ; on perd le modèle mental « un enregistrement par ligne ».

Si vous avez besoin d'une sortie à clés pointées ou avec explosion de lignes, pré-traitez le JSON avant de le coller, soit via un petit script Python/Node, soit avec le json_normalize de Pandas.

En-têtes, aller-retour des types et le piège de l'auto-format d'Excel

Le JSON a un vrai système de types (nombre, chaîne, booléen, null, tableau, objet) ; le CSV n'a que des chaînes. La convention est que le consommateur infère les types depuis le contexte. L'outil génère les en-têtes à partir de l'union de toutes les clés sur l'ensemble des objets d'entrée, laisse les champs manquants en cellules vides, écrit les booléens en true/false et écrit le null JSON en cellule vide.

Excel est serviable d'une manière qui blesse parfois :

Injection CSV, une note de sécurité utile à connaître

Si un CSV va être ouvert dans Excel ou Google Sheets, une cellule qui commence par =, +, - ou @ est interprétée comme une formule. La page OWASP CSV Injection documente cette classe d'attaques, une chaîne malicieuse comme =cmd|' /c calc'!A0 dans un champ soumis par un utilisateur peut exécuter des commandes quand un administrateur ouvre l'export. Pratique défensive : préfixer toute cellule commençant par un de ces quatre caractères avec une apostrophe simple, ou l'entourer de guillemets avec apostrophe initiale. Important à savoir si vous exportez du contenu généré par les utilisateurs.

Cas limites courants pris en charge

Quand utiliser cet outil

Confidentialité

Les exports CSV contiennent presque toujours des données personnelles, dossiers clients, données employés, journaux de transactions, listes de contacts. La conversion côté serveur envoie chaque enregistrement à travers l'infrastructure d'un tiers, où elle vit dans les logs de transit, les logs serveurs et possiblement les caches. La conversion côté navigateur garde la donnée sur votre machine. Toute l'étape « aplatir et citer » se passe ici en JavaScript dans votre navigateur ; rien n'est téléversé.

Erreurs courantes

  1. Mauvais délimiteur pour le destinataire. Envoyer un CSV à virgule à un utilisateur d'Excel français produit un fichier à une seule colonne. Adaptez le délimiteur à la locale du destinataire.
  2. Coller un seul objet au lieu d'un tableau. Un objet seul devient un CSV à une seule ligne avec en-têtes à partir des clés. Pour plusieurs enregistrements, encapsulez-les dans un tableau.
  3. Attendre un aplatissement à la Pandas. Les objets imbriqués dans cet outil se sérialisent en chaînes JSON dans les cellules. Pour des colonnes address.street, aplatissez d'abord.
  4. Utiliser le CSV pour de très grands nombres. JSON représente sûrement les entiers jusqu'à 253−1 (environ 9 quadrillions). Au-delà, transmettez sous forme de chaîne. Excel massacrera les longs ID numériques même quand le CSV les préserve.
  5. Ouvrir dans Excel sans penser à l'encodage. Les caractères non-ASCII ont besoin du BOM UTF-8 pour Excel sous Windows ; Google Sheets et le Excel moderne pour le web n'en ont pas besoin.
  6. Exporter du texte utilisateur sans filtrer les préfixes de formule. Les cellules commençant par =, +, - ou @ sont des formules dans Excel et Sheets. L'injection CSV est une vraie attaque contre les administrateurs qui ouvrent les fichiers exportés.

Foire aux questions

Mon JSON a des objets imbriqués. Comment sont-ils gérés ?

Chaque objet ou tableau imbriqué est sérialisé en chaîne JSON à l'intérieur de sa cellule CSV. Donc {user: {name: "Alice", role: "admin"}} devient une colonne user contenant {"name":"Alice","role":"admin"}. Cela fait l'aller-retour sans perte. Pour des colonnes user.name et user.role séparées, pré-traitez avec le json_normalize de Pandas ou un petit script d'aplatissement.

Pourquoi mes caractères non anglais semblent cassés dans Excel ?

Excel sous Windows ouvre les CSV en Windows-1252 par défaut. Un CSV UTF-8 sans Byte Order Mark ressemble à du mojibake (é → é). Le correctif : soit enregistrer le fichier avec un BOM UTF-8, soit utiliser l'assistant Data → From Text d'Excel et sélectionner explicitement UTF-8, soit ouvrir le fichier dans Google Sheets, qui gère l'UTF-8 sans BOM correctement.

L'outil gère-t-il les virgules à l'intérieur des champs ?

Oui. Selon la RFC 4180, les champs contenant le délimiteur, des sauts de ligne ou des guillemets doubles sont automatiquement entourés de guillemets doubles. Les guillemets doubles internes sont échappés en les doublant. Donc San Francisco, CA devient "San Francisco, CA" et She said "hi" devient "She said ""hi""".

Mon JSON est-il envoyé à un serveur ?

Non. La conversion tourne entièrement dans votre navigateur. Le contenu de la zone de texte n'est pas transmis, journalisé ni stocké où que ce soit. Cela compte parce que les enregistrements exportés contiennent souvent des données personnelles, données clients, infos employés, historiques de transactions, qu'on ne souhaite pas voir transiter par l'infrastructure de quelqu'un d'autre.

Puis-je obtenir une sortie séparée par tabulations (TSV) ?

Oui, choisissez « Tab » dans le menu du délimiteur. Le TSV est le bon choix quand vos données contiennent des virgules (adresses, champs en texte libre, données financières avec séparateurs de milliers) et que vous ne voulez pas mettre une cellule sur deux entre guillemets. Beaucoup de formats de bioinformatique et de données scientifiques sont TSV par défaut.

Quelle est la limite de taille ?

Tout ce que votre navigateur peut contenir. Il n'y a pas de limite côté serveur parce qu'il n'y a pas de serveur. Des dizaines de mégaoctets de JSON se convertissent en une seconde ou deux sur un appareil moderne ; les payloads de centaines de mégaoctets commencent à ralentir. Pour de très gros datasets, lotissez-les ou passez à un convertisseur en flux en ligne de commande.

Outils associés