Convertisseur CSV en JSON
Collez des données CSV ou TSV et convertissez-les instantanément en tableau JSON. Détection automatique du délimiteur et déduction des types. 100% local.
Comment Convertir un CSV en JSON en Ligne
Le CSV est le format que les tableurs, les bases de données et les CRM exportent par défaut, car ce n'est que du texte : une ligne d'en-tête, puis une ligne par enregistrement, avec un caractère qui marque où se termine une colonne et où commence la suivante. Le JSON, lui, est ce que les applications web modernes, les API REST et JavaScript lui-même attendent réellement : un tableau d'objets, chacun indexé par le nom de son champ. Ce convertisseur comble cet écart entièrement dans votre navigateur, transformant les lignes d'un export CSV ou TSV en un tableau JSON propre et structuré en le temps d'un clic.
Cet écart entre les deux formats surgit sans cesse dans le travail quotidien. Un développeur backend reçoit de l'équipe QA un tableur d'utilisateurs de test et doit le transformer en fixture JSON pour un test d'intégration. Un développeur frontend récupère un catalogue de produits exporté d'un système de gestion de stock et a besoin d'un tableau d'objets pour l'afficher sous forme de cartes. Un analyste de données extrait un rapport d'un CRM et doit le faire entrer dans un script qui ne lit que du JSON. Aucune de ces personnes ne veut écrire un analyseur syntaxique à la main, ni installer un outil en ligne de commande pour une conversion ponctuelle qui prend dix secondes ici.
Conversion CSV vers JSON, étape par étape
- Collez votre CSV. Déposez vos lignes dans le champ « Entrée CSV », qu'il s'agisse d'un copier-coller depuis Excel, Google Sheets, un export de base de données, ou un fichier TSV où des tabulations séparent les colonnes au lieu de virgules.
- Réglez le délimiteur. Laissez-le sur « Détection Automatique » pour la plupart des fichiers, ou choisissez directement Virgule, Tabulation, Point-virgule ou Barre verticale si vous connaissez déjà le caractère utilisé par votre export.
- Choisissez vos options d'en-tête et de type. Gardez « Première Ligne comme En-têtes » cochée pour utiliser votre ligne d'en-tête comme clés JSON, et activez ou non « Convertir les Nombres » selon que les champs à l'apparence numérique, comme des âges ou des prix, doivent devenir de vrais nombres JSON ou rester du texte.
- Cliquez sur « Convertir en JSON ». L'analyseur construit le tableau en bien moins d'une seconde, indenté comme vous l'avez choisi, et le dépose dans le champ « Sortie JSON » ci-dessous.
- Copiez ou téléchargez le résultat. Récupérez-le en un clic sur Copier, ou utilisez « Télécharger .json » pour l'enregistrer sous forme de fichier que vous pourrez transmettre, joindre ou importer directement dans un autre outil.
Chaque étape se déroule sur votre propre appareil. Il n'y a aucun envoi vers un serveur, aucune file d'attente, et aucune limite artificielle de lignes, puisque c'est le JavaScript exécuté dans votre onglet qui fait tout le travail.
Pourquoi le Délimiteur Compte : Virgule, Point-Virgule, Tabulation et Barre Verticale
Le « CSV » est en réalité une famille de formats plutôt qu'une norme stricte unique, et le caractère qui sépare vos colonnes n'est pas toujours une virgule, quoi qu'en dise l'extension du fichier. Cet outil embarque une étape de Détection Automatique précisément pour cette raison : il échantillonne les cinq premières lignes de votre texte collé, compte combien de fois chaque délimiteur candidat (tabulation, virgule, point-virgule, barre verticale) apparaît en dehors des sections entre guillemets, puis retient le caractère qui revient le plus régulièrement d'une ligne à l'autre plutôt que celui qui apparaît le plus souvent en tout. Un fichier où chaque ligne contient exactement trois points-virgules et aucune virgule est un signal clair, même si un point-virgule se glisse aussi, ailleurs, dans un champ de commentaire entre guillemets.
La surprise la plus fréquente est le point-virgule. Excel associe son séparateur de liste par défaut aux paramètres régionaux de Windows, et en France comme dans une bonne partie de l'Europe continentale, la virgule sert déjà de séparateur décimal pour les nombres, un prix s'écrivant "12,50" plutôt que "12.50". Si Excel utilisait aussi la virgule comme séparateur de champ, une simple colonne de prix se scinderait silencieusement en deux colonnes à chaque export. Pour éviter cette collision, Excel configuré en français exporte ses fichiers CSV avec des points-virgules comme délimiteur, même si le fichier continue de porter l'extension ".csv". Une ligne qui ressemble à "Nom;Ville;Salaire" avec une valeur "4500,75" est un export tout à fait normal d'un tableur français, pas un fichier corrompu. C'est l'une des premières choses qui déroutent un développeur qui reçoit son premier export CSV d'un collègue comptable et voit son analyseur habituel produire une seule colonne géante au lieu de plusieurs.
| Délimiteur | Origine typique | Exemple de ligne |
|---|---|---|
| Virgule (,) | Excel et Google Sheets en anglais, la plupart des API | Alice,30,Lyon |
| Point-virgule (;) | Excel en français, allemand, espagnol, italien | Alice;30;Lyon |
| Tabulation | Exports TSV, extractions de bases de données, copier-coller de tableurs | Alice 30 Lyon |
| Barre verticale (|) | Exports d'anciens systèmes, certains formats de journaux | Alice|30|Lyon |
Si la Détection Automatique se trompe, le plus souvent sur un fichier très court avec seulement une ou deux lignes à échantillonner, choisissez simplement le bon délimiteur dans le menu déroulant. Le reste de la logique d'analyse, guillemets, guillemets échappés et inférence de type, fonctionne exactement de la même façon quel que soit le délimiteur actif.
Champs Entre Guillemets, Virgules Internes et Retours à la Ligne
Un analyseur CSV naïf se contente de découper chaque ligne sur le caractère délimiteur, et cela casse dès qu'un champ contient ce délimiteur lui-même. Les données CSV réelles en sont pleines : une colonne "Nom, Prénom", une adresse avec une virgule avant le code postal, une description de produit listant des caractéristiques séparées par des virgules. La solution, normalisée depuis des décennies dans ce que l'on appelle communément la RFC 4180, consiste à entourer de guillemets doubles tout champ contenant le délimiteur, et ce convertisseur applique cette règle comme une véritable machine à états qui lit caractère par caractère plutôt qu'un simple découpage.
Concrètement, une ligne comme "Dupont, Jean",42,"Lyon, Rhône" se convertit correctement en un champ nom valant "Dupont, Jean" et un champ ville valant "Lyon, Rhône", chacun restant une seule valeur au lieu de se scinder en colonnes supplémentaires. L'analyseur suit un indicateur interne, activé dès qu'il rencontre un guillemet ouvrant, et ne traite une virgule comme séparateur de champ que lorsque cet indicateur est désactivé.
Guillemets échappés et champs multi-lignes
Deux cas particuliers apparentés reviennent constamment dans les exports réels. D'abord, un guillemet double littéral à l'intérieur d'un champ entre guillemets s'écrit comme deux guillemets doubles consécutifs, si bien que "Elle a dit ""bonjour"" en entrant" se décode en un seul champ lisant "Elle a dit "bonjour" en entrant", les guillemets doublés étant ramenés à un seul. Ensuite, un champ entre guillemets peut contenir un véritable retour à la ligne, ce qui arrive chaque fois qu'une colonne de tableur contient une adresse sur plusieurs lignes, une note ou un commentaire. L'analyseur ne s'arrête pas au premier caractère de saut de ligne rencontré à l'intérieur d'un champ ouvert ; il continue de lire, retours à la ligne compris, jusqu'au guillemet fermant, si bien qu'une adresse client exportée sur deux lignes physiques se retrouve en JSON sous la forme d'une seule chaîne contenant un \n intégré, plutôt que d'être coupée en deux ou de déborder sur la ligne suivante.
C'est exactement ce genre de cas qui casse les conversions CSV vers JSON réalisées avec une expression régulière rapide ou un simple split(','). Cet analyseur existe précisément pour que ces situations n'aient plus besoin d'être traitées à la main.
Lignes d'En-tête et Noms de Colonnes Dupliqués
Avec « Première Ligne comme En-têtes » cochée, la première ligne de vos données collées fournit le nom de clé de chaque champ dans chaque objet qui suit, si bien qu'un en-tête comme nom,email,age donne à chaque objet de sortie exactement ces trois clés, dans cet ordre. Décochez l'option pour des données CSV sans ligne d'en-tête du tout, peut-être un export brut de base de données ou un fichier de journal, et l'outil se rabat alors sur des clés génériques, col1, col2, col3 et ainsi de suite, numérotées selon la position de la colonne, afin que rien ne soit silencieusement perdu.
Les noms d'en-tête dupliqués méritent une attention particulière, car leur mode d'échec est silencieux plutôt que de produire un message d'erreur. Un objet JSON ne peut porter qu'une seule propriété par clé, donc une ligne d'en-tête comme nom,telephone,telephone, peut-être un tableur avec des colonnes distinctes « téléphone fixe » et « téléphone mobile » toutes deux simplement étiquetées « telephone », produit un objet où la seconde valeur de téléphone écrase la première pendant la conversion. Le JSON obtenu est parfaitement valide, il contient simplement, sans avertissement, un seul numéro de téléphone au lieu de deux. La correction se fait entièrement du côté de l'entrée : renommez les colonnes dupliquées avant de coller vos données, par exemple en telephone_fixe et telephone_mobile, afin que chaque clé de la ligne d'en-tête soit unique avant même que la conversion ne commence.
Inférence de Type : Nombres, Booléens et le Problème du Zéro Initial
Le CSV n'a aucune notion de types de données. Chaque cellule, qu'elle contienne un nom, un âge, un prix ou une valeur de case à cocher, est stockée comme du texte brut, et c'est la case « Convertir les Nombres » qui décide de la part de ce texte qui sera promue vers un véritable type JSON plutôt que de rester une chaîne. Quand l'option est cochée, tout champ qui réussit un test numérique est converti avec la fonction Number() de JavaScript, si bien que "age": "30" dans le CSV devient "age": 30 dans le JSON, prêt pour des calculs ou des comparaisons sans étape de conversion supplémentaire dans votre propre code.
Cette commodité a un coût réel pour les valeurs qui ont seulement l'air numériques. Un code produit "007", un numéro de compte "0042", ou un code postal comme "01000" réussissent tous ce test numérique et sont convertis respectivement en 7, 42 et 1000, perdant silencieusement les zéros initiaux qui leur donnaient tout leur sens. En France, ce piège touche directement les codes postaux des départements numérotés de 01 à 09 : "01000" pour Bourg-en-Bresse devient 1000, et "07100" pour Annonay devient 7100, deux valeurs devenues indiscernables d'un code postal qui aurait légitimement commencé par 1000 ou 7100 sans le zéro. Un code postal est un identifiant, pas une quantité, et une fois réduit au nombre 1000, plus rien ne le distingue d'un autre identifiant qui aurait pris cette forme par coïncidence. Si vos données mélangent des identifiants, des codes ou des codes postaux avec des champs réellement numériques, décochez « Convertir les Nombres » avant de convertir et conservez tout sous forme de chaînes, ou convertissez deux fois et corrigez manuellement les seuls champs identifiants dans le résultat.
| Valeur CSV | Convertir les Nombres activé | Convertir les Nombres désactivé |
|---|---|---|
30 | 30 (nombre) | "30" (chaîne) |
007 | 7 (nombre, zéro perdu) | "007" (chaîne, préservée) |
true | true (booléen) | true (booléen, toujours converti) |
| cellule vide | null | null (toujours converti) |
Deux lignes de ce tableau sont faciles à manquer : la conversion des booléens et le traitement des cellules vides se produisent tous deux de façon inconditionnelle, indépendamment de la case « Convertir les Nombres ». Une cellule contenant le texte true ou false, sans distinction de casse, devient toujours un véritable booléen JSON, et une cellule réellement vide devient toujours null plutôt qu'une chaîne vide "". Cela compte si un code qui lit la sortie vérifie un champ avec === null spécifiquement, ou s'attend à ce que toutes les valeurs d'une même clé partagent le même type JavaScript ; une colonne parfois vide produira un mélange de chaînes et de valeurs null à travers le tableau plutôt qu'une colonne uniforme de chaînes vides.
UTF-8 contre Windows-1252 : Corriger les Caractères Accentués Abîmés par Excel
Les bugs d'encodage de texte comptent parmi les plus déroutants à diagnostiquer, car le fichier paraît parfaitement correct dans le programme qui l'a créé et ne casse qu'en aval. Le cas classique : un champ de nom contenant "café" ou "François" est exporté depuis Excel, collé dans ce convertisseur ou tout autre outil compatible UTF-8, et ressort sous la forme café ou François. Ce charabia à double encodage porte un nom, le mojibake, et une cause précise : le fichier a été enregistré avec une page de code Windows sur 8 bits, le plus souvent Windows-1252, où le "é" tient sur un seul octet, mais il est ensuite lu par quelque chose qui attend de l'UTF-8, où ce même caractère occupe deux octets, et chacun de ces deux octets se retrouve interprété à tort comme son propre caractère séparé.
La correction se trouve dans la boîte de dialogue Enregistrer sous d'Excel, pas dans cet outil, puisqu'au moment où du texte abîmé a déjà été collé, les octets d'origine ont déjà disparu. Sous Windows, choisir le type de fichier "CSV (séparateur : point-virgule)" classique dans la liste continue souvent, sur de nombreuses installations, à utiliser la page de code régionale du système, tandis que "CSV UTF-8 (délimité par des virgules)" écrit explicitement le fichier en encodage UTF-8, exactement ce qu'attendent les navigateurs et ce convertisseur. Si vous recevez régulièrement des fichiers CSV avec des caractères accentués abîmés de la part d'un collègue, lui demander de réexporter avec l'option UTF-8, ou ouvrir le fichier dans un éditeur de texte brut et l'enregistrer à nouveau avec l'encodage UTF-8 explicitement sélectionné, corrige le problème à la source plutôt que d'avoir à le rattraper après coup.
Indicateur d'ordre des octets et lignes vides en fin de fichier
Deux artefacts d'encodage plus discrets méritent d'être connus. Excel ajoute souvent un indicateur d'ordre des octets, une signature UTF-8 invisible parfois visible sous la forme  si elle est mal interprétée, tout au début d'un fichier CSV en UTF-8, censée aider d'autres programmes à détecter automatiquement l'encodage mais qui apparaît parfois comme un caractère parasite collé au premier nom d'en-tête si un outil ne la retire pas. Par ailleurs, les exports de tableurs se terminent couramment par une ligne vide après la dernière ligne réelle de données. Ce convertisseur filtre toute ligne dont chaque cellule est vide avant de construire le tableau JSON, si bien qu'un retour à la ligne final dans votre fichier ne produit pas d'objet vide superflu à la fin de votre résultat.
Pourquoi ce Convertisseur Fonctionne Entièrement dans Votre Navigateur
Beaucoup d'outils « convertir CSV en JSON en ligne » téléversent discrètement tout ce que vous collez vers un serveur, le traitent là-bas, puis vous renvoient un résultat. Cet aller-retour reste invisible en usage normal, mais il signifie que vos données ont séjourné, ne serait-ce que brièvement, sur une machine que vous ne contrôlez pas. Pour un jeu de données d'exemple public, ce n'est pas un problème. Pour une fiche de paie, une liste de clients, un tarif fournisseur, ou tout ce qui relève d'un accord de confidentialité, c'est un risque réel auquel la plupart des gens ne pensent jamais à vérifier.
Ce convertisseur ne fait jamais ce trajet. La logique d'analyse est du JavaScript ordinaire livré avec la page, et elle s'exécute entièrement dans votre propre onglet de navigateur dès que vous cliquez sur Convertir. Ouvrez l'onglet réseau de votre navigateur pendant que vous l'utilisez, vous n'y verrez passer aucune requête transportant vos données CSV. Cela a aussi une conséquence pratique au-delà de la confidentialité : il n'existe aucune limite de débit côté serveur, aucun plafond de taille de fichier imposé par une API, et aucune file d'attente à attendre, puisque c'est votre propre appareil qui fait tout le travail plutôt qu'un serveur partagé.
Ce que cela signifie pour les exports confidentiels
Si vous convertissez des fiches de paie, des données financières, des informations produit non encore annoncées, ou toute autre donnée qui ne devrait pas quitter votre organisation, un outil purement local retire ce risque de l'équation au lieu de vous demander de faire confiance à une politique de confidentialité que vous n'avez pas lue. C'est le même raisonnement qui pousse les développeurs à exécuter un formateur de code en local plutôt que de coller du code source propriétaire dans un formulaire web quelconque : l'outil le plus sûr est celui qui n'a jamais eu la possibilité de faire fuiter quoi que ce soit.
Usages Courants de ce Convertisseur CSV vers JSON
La même étape de conversion revient dans des métiers très différents. Quelques schémas se répètent constamment.
Prototypage frontend sans backend
Les développeurs frontend qui construisent un composant, un tableau ou une maquette de tableau de bord ont souvent besoin de données d'exemple réalistes avant qu'une véritable API n'existe. Exporter un tableur de lignes d'exemple et le convertir ici produit un tableau JSON immédiatement utilisable, à déposer directement dans un fichier de données fictives ou une fixture locale.
Alimenter une base de données documentaire ou NoSQL
Des bases comme MongoDB stockent des documents sous forme d'objets proches du JSON, pas de tables, si bien qu'un jeu de données qui a commencé sa vie comme export de tableur doit souvent devenir un tableau JSON avant de pouvoir être importé avec un outil comme mongoimport. Convertir l'export ici est en général le chemin le plus rapide entre un tableur et un fichier importable.
Tests d'API et charges utiles fictives
Les ingénieurs QA et les développeurs backend qui construisent des cas de test dans des outils comme Postman ou Insomnia partent souvent d'un tableur d'exemples d'entrées, une ligne par cas de test, et ont besoin de ces mêmes données sous forme de tableau JSON de corps de requêtes. Convertir une seule fois ici garde le tableur comme source de vérité tout en produisant exactement la forme JSON attendue par un exécuteur de tests.
Migration de données et scripts ponctuels
Migrer des données entre systèmes, un export d'un ancien CRM vers le format d'import d'une nouvelle plateforme, ou une extraction de base de données héritée vers une application moderne, implique fréquemment un script qui lit du JSON. Convertir l'export brut ici en amont évite d'avoir à écrire une étape d'analyse CSV à l'intérieur même de ce script.
Configuration et contenu depuis des tableurs
Les collègues non techniques sont souvent bien plus à l'aise pour tenir une liste dans Google Sheets que pour éditer directement un fichier JSON, qu'il s'agisse d'une liste de questions fréquentes, de catégories de produits ou de drapeaux de fonctionnalité. Convertir leur tableur ici à chaque mise à jour garde le fichier JSON synchronisé avec ce qu'ils ont modifié le plus récemment, sans qu'ils aient à toucher un éditeur de texte.
Conseils pour des Conversions Propres et Pièges Courants
- Vérifiez le délimiteur détecté sur les fichiers courts. La Détection Automatique échantillonne les cinq premières lignes, un fichier avec seulement une ou deux lignes lui laisse donc très peu de matière. Si le résultat semble faux sur un petit échantillon, réglez le délimiteur manuellement plutôt que de faire confiance à la détection automatique.
- Décidez de « Convertir les Nombres » avant de convertir, pas après. Une fois que des identifiants, des codes ou des codes postaux ont perdu leurs zéros initiaux dans la conversion numérique, cette information a disparu du résultat. Repérez d'abord vos colonnes ressemblant à des identifiants, et laissez l'option décochée si l'une d'elles semble à risque.
- Surveillez les noms d'en-tête dupliqués. Deux colonnes partageant un même en-tête fusionnent silencieusement en une seule clé dans chaque objet de sortie. Renommez les doublons avant de coller vos données, car l'outil n'a aucun moyen de deviner lequel des deux vous vouliez conserver.
- N'oubliez pas que les champs sont réduits aux espaces près. Les espaces en début et fin de chaque champ sont retirés pendant l'analyse, si bien qu'une valeur comme
" Lyon "ressort sous la forme"Lyon". C'est en général ce que vous souhaitez, mais cela signifie que des données sensibles aux espaces, comme un code commençant volontairement par une espace, ne survivront pas à l'aller-retour. - Réexportez depuis Excel en UTF-8 si les caractères semblent abîmés. Le mojibake remonte presque toujours à un décalage d'encodage au moment de l'export, pas à un bug du collage ou de l'analyseur, et la correction la plus propre passe par une option différente dans la boîte Enregistrer sous du tableur source plutôt que par un nettoyage manuel après coup.
- Utilisez l'option Indentation pour correspondre à votre étape suivante. Choisissez 2 ou 4 espaces pour un résultat destiné à être lu ou versionné, ou Minifié quand le JSON part directement vers une requête API ou un script où la taille du fichier compte plus que la lisibilité.
La plupart des surprises de conversion se ramènent à l'une de ces cinq causes : le mauvais délimiteur, une conversion numérique non désirée, un en-tête dupliqué, un décalage d'encodage, ou des espaces réduits. Aucune de ces situations n'est un bug de l'analyseur, ce sont des propriétés des données source qui méritent un coup d'œil rapide avant de cliquer sur Convertir.
Questions Fréquentes
Outils de Développement Associés
🔒 Confidentialité 100% Locale
Toute l'analyse CSV et la génération JSON se déroulent <strong>entièrement dans votre navigateur</strong>. Aucune donnée n'est jamais envoyée à un serveur. Vos données restent sur votre appareil à tout moment.