Convertisseur CSV vers JSON
Convertissez CSV en JSON ou JSON en CSV, avec détection du délimiteur, gestion des en-têtes et conversion de types sans perte.
La sortie apparaîtra ici
Ce que fait cet outil
Le CSV est ce que vous donnent les tableurs, les exports de bases de données et les tableaux de bord analytiques ; le JSON est ce que veulent les API et le code. Cet outil convertit de l’un à l’autre dans les deux sens, dans votre navigateur. Collez du CSV et vous obtenez un tableau JSON — des objets dont les clés viennent de la ligne d’en-tête, ou de simples tableaux quand les données n’en ont pas. Changez de sens et un tableau JSON redevient du CSV, chaque valeur étant entourée de guillemets exactement autant qu’il le faut.
Le travail se fait sur votre appareil, et cela compte ici : le CSV est le format vers lequel on exporte des listes de clients, des factures et des extraits analytiques. Rien de tout cela n’est téléversé où que ce soit.
Pourquoi découper sur les virgules ne suffit pas
La façon évidente de lire du CSV — découper chaque ligne sur les virgules — échoue sur les vrais fichiers, car le format possède un mécanisme d’échappement. Un champ entouré de guillemets doubles peut contenir le délimiteur, un guillemet littéral écrit sous forme de deux guillemets consécutifs, et même des sauts de ligne, auquel cas un enregistrement s’étend sur plusieurs lignes du fichier. Cet outil applique les vraies règles (RFC 4180) avec un analyseur caractère par caractère : les trois cas passent intacts.
name,note Grace,"rear admiral, USN" Ada,"she said ""hello""" Alan,"two lines"
Ces quatre enregistrements ont deux champs chacun, malgré les virgules, les guillemets et le saut de ligne supplémentaires. Si l’échappement est mal formé — un champ ouvre un guillemet et ne le referme jamais — vous obtenez la ligne et la colonne où le guillemet fautif a commencé, plutôt qu’un tableau silencieusement déformé.
Le délimiteur n’est souvent pas une virgule
Malgré le nom, les valeurs séparées par des virgules ne le sont souvent pas. Dans les locales où la virgule est le séparateur décimal — presque toute l’Europe continentale — Excel exporte avec des points-virgules, car 1,50 y est un nombre. Les outils de bases de données et de ligne de commande produisent souvent des données séparées par des tabulations, et les chaînes de traitement de journaux préfèrent les barres verticales. Coller l’un de ces fichiers dans un outil qui ne connaît que la virgule donne une seule colonne très large : la frustration la plus courante avec le CSV.
Le délimiteur est donc détecté plutôt que supposé. Chaque candidat est essayé, et le gagnant est celui qui donne le même nombre de colonnes sur chaque ligne — la cohérence, pas le nombre le plus élevé, sans quoi un fichier plein de virgules décimales passerait pour séparé par des virgules. Le délimiteur détecté est toujours affiché, et vous pouvez le remplacer si la détection se trompe.
En-têtes et forme de la sortie
Avec « la première ligne est un en-tête » activé, cette ligne fournit les noms de clés et la sortie est un tableau d’objets — la forme qu’attend presque toute API. Désactivé, chaque ligne devient un tableau de valeurs, ce qu’il faut pour un fichier qui commence directement par les données.
- Une ligne comptant moins de champs que l’en-tête reçoit des chaînes vides pour les colonnes manquantes, plutôt que des clés à valeur undefined.
- Les noms d’en-tête en double sont rendus uniques (id, id_2, id_3) au lieu de s’écraser mutuellement, ce qui supprimerait des colonnes en silence.
- Une cellule d’en-tête vide devient column_2, column_3 et ainsi de suite, pour qu’aucune clé ne soit la chaîne vide.
- Les lignes vides sont ignorées, comme le font les importateurs de tableurs : un fichier collé se termine souvent par un saut de ligne isolé, et une ligne de valeurs vides à cet endroit ressemble à un bogue.
Une conversion de types qui ne peut pas perdre de données
Tout champ CSV est du texte. Convertir en nombres JSON un texte qui semble numérique est en général ce que l’on veut — mais c’est aussi ainsi que les données se détruisent discrètement. Un code postal 01234 devient 1234. Un numéro de commande à 20 chiffres devient un flottant arrondi. Un prix écrit 1.50 perd son zéro final.
La règle utilisée ici évite tout cela sans liste de cas particuliers : une valeur ne devient un nombre que si sa reconversion en texte reproduit exactement l’original. 42 réussit, donc il est converti. 01234 échoue, donc il reste une chaîne. De même pour 1.50, +5, 1e5, et tout entier au-delà du point où les flottants perdent en précision. Les chaînes true et false deviennent des booléens ; un champ vide reste une chaîne vide plutôt que de devenir null, car le CSV ne peut pas exprimer la différence entre « aucune valeur » et « valeur vide », et en inventer une reviendrait à inventer de l’information.
Retour vers le CSV
Dans l’autre sens, un tableau d’objets devient une table dont les colonnes sont l’union de toutes les clés, dans leur ordre de première apparition — ainsi les lignes aux clés différentes restent alignées, et une clé absente donne une cellule vide. Un tableau de tableaux est écrit ligne par ligne. Les guillemets ne sont appliqués que là où le format l’exige : une valeur contenant le délimiteur, un guillemet ou un saut de ligne est entourée, ses guillemets internes étant doublés.
Les valeurs que le CSV ne sait pas représenter — un objet ou un tableau imbriqué — sont écrites en JSON à l’intérieur de leur cellule au lieu d’être aplaties ou supprimées : rien ne disparaît lors d’une conversion. Null devient une cellule vide.
Questions fréquentes
- Pourquoi mon fichier est-il sorti en une seule colonne géante ?
- Le délimiteur n’est pas celui qu’a utilisé l’outil. Cela signifie généralement un fichier à points-virgules (la norme pour Excel dans les locales européennes, où la virgule est le séparateur décimal) ou un export séparé par des tabulations. La détection le repère normalement : regardez quel délimiteur est affiché et choisissez-en un autre dans la liste si la détection s’est trompée.
- Pourquoi mon identifiant est-il encore une chaîne dans le JSON ?
- Parce que le convertir le modifierait. Les nombres ne sont convertis que lorsque la conversion est exactement réversible : 01234 garde son zéro initial et les identifiants longs gardent tous leurs chiffres. Si vous les voulez vraiment en nombres, vos données doivent être écrites sans le zéro initial, ou vous pouvez convertir ensuite, là où vous maîtrisez la précision.
- Qu’advient-il des virgules et des guillemets à l’intérieur d’un champ ?
- Ils sont préservés. À l’entrée, un champ entre guillemets peut contenir des virgules, des guillemets doublés et même des sauts de ligne ; à la sortie, toute valeur contenant le délimiteur, un guillemet ou un saut de ligne est entourée de guillemets, ses guillemets internes étant doublés. Une valeur traverse CSV → JSON → CSV sans changement.
- Mes données sont-elles envoyées quelque part ?
- Non. L’analyse et la conversion s’exécutent entièrement dans votre navigateur : les listes de clients, exports et rapports qui vivent habituellement en CSV ne quittent jamais votre appareil.