Convertir CSV en JSON
CSV vers JSON analyse un export de tableur en un tableau d’enregistrements dans votre navigateur. Il lit correctement la RFC 4180 — les champs entre guillemets contenant des virgules, des sauts de ligne et des guillemets échappés survivent tous — déduit les types scalaires, et reconstruit les objets et tableaux imbriqués à partir de noms de colonnes à points ou à crochets.
Comment fonctionne Convertir CSV en JSON ?
L’implémentation naïve de cette conversion tient en une ligne — line.split(",") — et elle est fausse pour une grande fraction des fichiers réels. Un champ CSV peut être entre guillemets, et un champ entre guillemets peut contenir le délimiteur, un saut de ligne littéral, et des guillemets doublés valant pour un seul. Découper sur les virgules transforme "Hopper, G." en deux champs et décale d’un cran chaque colonne qui suit, ce qui corrompt l’enregistrement au lieu d’échouer dessus.
L’analyseur ici est donc une machine à états explicite sur le flux de caractères, qui suit si l’on se trouve à l’intérieur d’une région entre guillemets, exactement comme le décrit la RFC 4180. Il gère aussi ce que la RFC ne mentionne pas mais que les fichiers réels contiennent : une marque d’ordre des octets UTF-8 avant le premier nom de colonne, des fins de ligne CRLF et LF nues mélangées dans un même fichier, un saut de ligne final qui produirait sinon un enregistrement vide fantôme, et un guillemet égaré au milieu d’un champ non entre guillemets, qu’Excel écrit et qui est pris littéralement plutôt que traité comme fatal.
La détection du délimiteur compte les candidats dans la ligne d’en-tête — virgule, point-virgule, tabulation, barre verticale — mais uniquement hors des régions entre guillemets. Un fichier dont l’en-tête est name,description avec des points-virgules à l’intérieur des descriptions entre guillemets serait sinon découpé sur le mauvais caractère, le genre de bug qui ressemble à des données corrompues plutôt qu’à un mauvais réglage.
L’inférence de types est délibérément conservatrice. Une cellule correspondant à la grammaire des nombres JSON devient un nombre, true / false deviennent des booléens, et null devient null. Tout le reste reste une chaîne — y compris 007, parce que la grammaire interdit les zéros de tête et qu’un numéro de pièce ne doit pas être renuméroté, et y compris les entiers au-delà de 2 53 , parce que les convertir perd carrément des chiffres.
Enfin, les noms de colonnes qui ressemblent à des chemins sont traités comme des chemins : customer.name reconstruit un objet imbriqué, tags[0] reconstruit un tableau. Comme ces noms viennent du fichier, ce sont des entrées non fiables utilisées pour indexer un objet — une colonne appelée a.__proto__.polluted est une charge utile de pollution de prototype, et elle est refusée plutôt que suivie.
CSV en entrée
id,user.name,tags[0],tags[1] 1,Ada,a,b 2,"Hopper, G.",c,
JSON en sortie
[
{ "id": 1, "user": { "name": "Ada" }, "tags": ["a", "b"] },
{ "id": 2, "user": { "name": "Hopper, G." }, "tags": ["c"] }
]CSV en entrée → JSON en sortie
CSV en entrée
id,name,joined 1,Ada,1815-12-10 2,Grace,1906-12-09
JSON en sortie
[
{
"id": 1,
"name": "Ada",
"joined": "1815-12-10"
},
{
"id": 2,
"name": "Grace",
"joined": "1906-12-09"
}
]Quelles options et quels cas limites Convertir CSV en JSON prend en charge ?
| Paramètre | Type | Valeur par défaut | Comportement et cas limites |
|---|---|---|---|
| Délimiteur | auto | , ; tab | | auto | Le mode automatique compte les séparateurs candidats dans la ligne d’en-tête, en ignorant tout ce qui se trouve entre guillemets. À remplacer lorsque l’en-tête d’un fichier n’est pas représentatif de son contenu. |
| Ligne d’en-tête | booléen | true | La première ligne fournit les clés. Désactivé, les clés deviennent column1, column2, etc. Une cellule d’en-tête vide revient aussi à un nom positionnel, afin qu’un enregistrement ne manque jamais de clé. |
| Déduire les types | booléen | true | Applique la grammaire JSON pour les nombres plus true/false/null. Les valeurs « 007 », « +1 », « 0x10 » et « 1,5 » restent des chaînes de caractères. À désactiver lorsque chaque colonne doit rester du texte — une colonne d’ID pleine de chiffres est la raison habituelle. |
| Développer les chemins | booléen | true | Reconstruit la structure imbriquée à partir de customer.name et tags[0]. Désactivé, on obtient un plat dont les clés sont les noms de colonne littéraux, ce qui est utile quand une colonne s’appelle vraiment « user.name ». |
| Cellules vides | omettre | conserver | omettre | Le CSV ne peut distinguer un champ absent d’une chaîne vide. L’option d’omission est le meilleur défaut car l’ensemble des colonnes est une union : un enregistrement qui ne contient simplement pas tags[1] s’écrit comme une cellule vide, tout comme un autre dont tags[1] est « ». |
| Champs entre guillemets | RFC 4180 | — | Un champ entre guillemets peut contenir le délimiteur, CR, LF et les guillemets doublés. Un guillemet non terminé est une erreur critique avec la ligne et la colonne, car tronquer silencieusement produirait un résultat plausible mais faux. |
| Lignes irrégulières | avertissement | — | Une ligne avec un nombre incorrect de champs est conservée, pas supprimée : les champs manquants sont omis et les excédents ignorés, avec un avertissement indiquant le nombre de lignes affectées. |
| Colonnes dupliquées | avertissement | la plus à droite gagne | Comportement similaire à l’import dans un tableur. Un avertissement est explicite, car supprimer silencieusement une colonne visible dans le fichier est pire que de le mentionner. |
Questions fréquentes
Pourquoi mon fichier se convertit-il mal quand un champ contient une virgule ?
Cela ne devrait pas — cet analyseur suit correctement les guillemets, donc "Hopper, G." reste un seul champ. Si un convertisseur le sépare en deux, c’est qu’il découpe sur les virgules sans tenir compte des guillemets, ce qui est le bug CSV le plus répandu. Si cela arrive ici, vérifiez si le champ est réellement entre guillemets dans le fichier source : une virgule non entre guillemets est réellement ambiguë et aucun analyseur ne peut la rattraper.
Pourquoi les zéros de tête de ma colonne d’identifiants disparaissent-ils sans arrêt ?
Pas ici — "007" reste une chaîne, parce que la grammaire des nombres JSON interdit les zéros de tête et que cette règle est exactement ce qui protège les numéros de pièce, les codes postaux et les références de compte. Si des zéros disparaissent, c’est arrivé dans le tableur avant l’export : Excel les retire à l’importation tant que la colonne n’est pas réglée sur Texte. Si vous voulez que chaque colonne reste du texte, désactivez « Inférer les types ».
Que fait customer.name dans un en-tête ?
Il reconstruit un objet imbriqué : {"customer":{"name":"…"}}. Les noms à crochets comme tags[0] reconstruisent des tableaux. C’est l’inverse de ce qu’écrit « Convertir JSON en CSV », donc un document survit à un aller-retour par un tableur. Si vos colonnes portent réellement des noms à points et que vous les voulez littéraux, désactivez « Développer les chemins ».
Peut-il gérer un fichier avec des sauts de ligne à l’intérieur d’un champ ?
Oui, à condition que le champ soit entre guillemets, ce qu’exige la RFC 4180. Une adresse ou un commentaire sur plusieurs lignes est courant dans les exports et est géré correctement. Ce qui ne peut pas être géré, c’est un saut de ligne non entre guillemets au milieu d’un enregistrement, car rien ne le distingue de la fin de la ligne.
Quelle taille de fichier puis-je convertir ?
Jusqu’à 8 MB. La conversion s’exécute sur le thread principal, et au-delà de ce plafond elle est refusée avec un message plutôt que tentée, parce que la tenter verrouillerait l’onglet. Rien n’est envoyé quelle que soit la taille — le fichier est lu par votre navigateur et jamais envoyé nulle part.
Mes données de tableur sont-elles envoyées à un serveur ?
Non. L’analyse se fait dans la page que vous avez déjà ouverte. Cela compte spécialement pour cet outil, car un export CSV contient en général de vrais enregistrements — clients, commandes, paie — et en envoyer un à un endpoint inconnu pour le reformater est une divulgation que vous ne pouvez pas annuler. Ouvrez le panneau Réseau et regardez pendant que vous collez.
Quels outils liés devriez-vous utiliser ensuite ?
- Convertir JSON en CSVTransforme des enregistrements en feuille de calcul, imbrications comprises
- JSON vers ExcelCréez un classeur Excel typé, pas un CSV avec une nouvelle extension
- 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