Convertir JSON en CSV
JSON vers CSV convertit un tableau d’enregistrements en grille prête pour un tableur, dans votre navigateur. Les objets et tableaux imbriqués deviennent des chemins de colonnes explicites et réversibles au lieu d’être aplatis ou abandonnés, et l’ensemble des colonnes est l’union de tous les enregistrements, pour que les champs qui n’apparaissent que dans des lignes ultérieures survivent.
Comment fonctionne Convertir JSON en CSV ?
La partie difficile de cette conversion n’est pas la syntaxe, c’est le désaccord de forme. Le CSV est un rectangle : un jeu de colonnes fixe, une ligne par enregistrement, un scalaire par cellule. Le JSON est un arbre. Chaque convertisseur doit décider ce qui se passe quand un enregistrement contient {"customer":{"name":"Ada"}}, et la plupart décident en silence — en abandonnant l’objet imbriqué, en collant [object Object] dans la cellule, ou en resérialisant tout le sous-arbre en JSON dans un seul champ.
La décision prise ici est un encodage explicite des chemins. customer.name pour un membre objet, tags[0] pour un indice de tableau. Les deux notations sont volontairement différentes pour que le mappage soit réversible : avec des seuls points, a.0 ne peut pas dire si a est un tableau ou un objet avec une clé appelée « 0 », et un aller-retour jusqu’au CSV puis retour obligerait à deviner. Collez le résultat dans CSV vers JSON et vous retrouvez le document de départ.
La deuxième décision est l’ensemble des colonnes. L’implémentation évidente lit les clés du premier enregistrement et en fait l’en-tête — et perd en silence tout champ qui n’apparaît que plus tard. Les vrais exports sont hétérogènes : une note optionnelle sur une commande sur cinquante, une remise qui ne s’applique que parfois. L’ensemble des colonnes ici est l’union de tous les enregistrements, dans l’ordre de première apparition, pour que rien ne soit abandonné et que l’ordre reste naturel à lire.
Les tableaux font l’objet d’un choix, car il n’y a pas de bonne réponse. Explode donne à chaque élément sa propre colonne et l’aller-retour est exact. Join les réunit dans une seule cellule, séparés par un délimiteur, ce que veut généralement celui qui ouvre ça dans un tableur — mais c’est avec perte, donc cela ne s’applique qu’aux tableaux de scalaires ; un tableau d’objets est toujours éclaté, car le réunir le détruirait.
Les guillemets suivent RFC 4180 : un champ est mis entre guillemets quand il contient le délimiteur, un guillemet double, un saut de ligne, ou des espaces en début ou fin qu’un tableur retirerait sinon. Les guillemets à l’intérieur d’un champ entre guillemets sont doublés. Tout le reste est émis brut, car un fichier où chaque cellule est entre guillemets est plus difficile à lire sans être plus correct.
JSON en entrée
[
{ "id": 1, "user": { "name": "Ada" }, "tags": ["a","b"] },
{ "id": 2, "user": { "name": "Grace" }, "tags": ["c"], "vip": true }
]CSV en sortie
id,user.name,tags[0],tags[1],vip 1,Ada,a,b, 2,Grace,c,,true
JSON en entrée → CSV en sortie
JSON en entrée
[
{ "id": 1, "customer": { "name": "Ada", "city": "London" }, "total": 42.5 },
{ "id": 2, "customer": { "name": "Grace", "city": "New York" }, "total": 7 }
]CSV en sortie
id,customer.name,customer.city,total 1,Ada,London,42.5 2,Grace,New York,7
Quelles options et quels cas limites Convertir JSON en CSV prend en charge ?
| Paramètre | Type | Valeur par défaut | Comportement et cas limites |
|---|---|---|---|
| Délimiteur | , ; tab | | , | Le point-virgule est le standard de fait dans les régions où la virgule est le séparateur décimal, et c’est ce qu’Excel attend dans ces cas. La tabulation évite presque complètement les guillemets, car les tabulations sont rares à l’intérieur des données. |
| Mode des tableaux | explode | join | explode | Explode donne tags[0], tags[1] et fait un aller-retour exact. Join réduit les scalaires en une seule cellule et est destructif. Un tableau d’objets est toujours explosé, car le joindre détruirait entièrement la structure. |
| Tout entre guillemets | booléen | false | Par défaut, un champ est mis entre guillemets uniquement quand RFC 4180 l’exige. Certains importateurs stricts préfèrent tout mettre entre guillemets ; le résultat est valide dans les deux cas. |
| Ligne d’en-tête | booléen | true | Émet les chemins de colonnes aplatis comme première ligne. Sans elle, les significations des colonnes sont purement positionnelles, et un aller-retour vers JSON ne peut pas reconstruire l’imbrication. |
| Ensemble de colonnes | union | tous les enregistrements | Toutes les colonnes qui apparaissent dans n’importe quel enregistrement, dans l’ordre de première apparition. Lire l’en-tête sur le premier enregistrement est la manière la plus courante dont un convertisseur supprime silencieusement des données. |
| null | valeur | cellule vide | Écrit comme un champ vide plutôt que comme le texte « null », car un tableur traite le mot littéral comme une chaîne. Cela signifie que null et absent sont indistinguables en sortie — inhérent au CSV, pas à cet outil. |
| Forme racine | array | object | array | Un tableau d’enregistrements est l’entrée attendue. Un seul objet devient une ligne. Un objet avec exactement un membre tableau — l’enveloppe {"data":[…]} que la plupart des API retournent — utilise ce tableau, et le précise. |
| Taille d’entrée | bytes | 8 MB | La conversion s’exécute sur le thread principal, donc au-dessus de ce seuil, elle est refusée plutôt que tentée. Rien n’est envoyé à aucune taille. |
Questions fréquentes
Que deviennent les objets imbriqués ?
Ils deviennent des noms de colonnes à points : {"customer":{"name":"Ada"}} produit une colonne appelée customer.name. Les tableaux utilisent la notation à crochets — tags[0], tags[1] — de sorte que les deux soient distinguables et que la conversion soit réversible. C’est la différence avec la plupart des convertisseurs, qui abandonnent l’objet imbriqué, écrivent [object Object] dans la cellule, ou fourrent un blob JSON dans un seul champ.
Mes enregistrements n’ont pas les mêmes champs. Certains seront-ils abandonnés ?
Non. L’ensemble des colonnes est l’union des champs de tous les enregistrements, dans l’ordre de leur première apparition, donc une note qui n’apparaît que sur une commande sur cinquante obtient quand même sa propre colonne, avec des cellules vides partout ailleurs. Les convertisseurs qui lisent l’en-tête sur le seul premier enregistrement perdent ces champs en silence — c’est la défaillance qui vaut le plus la peine d’être évitée ici.
Puis-je reconvertir le CSV en JSON d’origine ?
Oui, avec le mode explode et la ligne d’en-tête activée. Collez le résultat dans CSV vers JSON et l’imbrication est reconstruite à partir des chemins de colonnes. Deux limites tiennent au CSV et non à l’outil : une cellule ne peut pas distinguer la chaîne "22201" du nombre 22201, et elle ne peut pas distinguer une chaîne vide d’un champ absent.
Pourquoi ma colonne de nombres est-elle entre guillemets dans Excel, ou affichée comme une date ?
C’est l’heuristique d’import d’Excel, pas le fichier. Il réinterprète agressivement tout ce qui ressemble à une date, et retire les zéros de tête de tout ce qui ressemble à un nombre, ce qui abîme les codes produits et les codes postaux. Utilisez Données → À partir d’un fichier Texte/CSV plutôt que de double-cliquer sur le fichier, et définissez ces colonnes sur Texte dans la boîte de dialogue d’import.
Mon JSON est-il envoyé quelque part ?
Non. La conversion s’exécute dans votre navigateur. Ouvrez DevTools, allez dans le panneau Réseau et collez un document — aucune requête ne le transporte. Cela compte ici plus qu’il n’y paraît : le JSON que les gens convertissent en CSV est généralement un export de vrais enregistrements, précisément les données qui ne devraient pas passer par un serveur inconnu en route vers un tableur.
Quel délimiteur choisir ?
La virgule, sauf si vous avez une raison. Le point-virgule si le fichier part vers quelqu’un dans une locale où la virgule est le séparateur décimal, car c’est ce que son Excel attend — un fichier délimité par des virgules s’y ouvre en une seule colonne. La tabulation si les données contiennent beaucoup de virgules et de guillemets, puisque les tabulations n’apparaissent presque jamais dans les champs et que le fichier reste lisible.
Que peut faire d'autre Convertir JSON en CSV ?
Quels outils liés devriez-vous utiliser ensuite ?
- Convertir CSV en JSONLit un export de feuille de calcul, guillemets compris
- Sérialiser du JSONÉchappe un document en chaîne prête à intégrer
- Récupérer du JSON échappéRetrouve un document noyé dans les séquences d’échappement
- Convertir JSON en TypeScriptGénère des interfaces depuis un exemple, optionnels compris