Comment convertir CSV en JSON
CSV (Comma-Separated Values) est le format le plus simple pour les donnees tabulaires, chaque tableur peut l'exporter. JSON (JavaScript Object Notation) est le format standard pour les API web et les applications modernes. Convertir entre eux est l'une des taches de donnees les plus courantes en developpement. Un convertisseur base sur navigateur gere tout le travail localement sans televerser vos donnees sur un serveur.
Quand vous avez besoin de CSV vers JSON
- Charger des donnees dans une application web : la plupart des frameworks JavaScript fonctionnent nativement avec JSON, pas CSV
- Charges utiles d'API : si vous avez des donnees dans un tableur qui doivent aller a un endpoint API, elles doivent etre en JSON
- Importations de bases de donnees : de nombreuses bases de donnees NoSQL (MongoDB, Firebase) acceptent directement JSON
- Fichiers de configuration : transformer un tableur de parametres en un fichier de configuration JSON
- Analyse de donnees : convertir les donnees exportees dans un format que vos outils peuvent traiter
- Mutations GraphQL : insertion en masse d'enregistrements depuis un tableur via un endpoint GraphQL
- Fixtures de test : transformer une liste de cas de test dans un tableur en JSON pour les tests automatises
- Charges utiles webhook : quand un service attend du JSON mais que vous avez des donnees dans un tableur
- Fichiers d'internationalisation (i18n) : un tableur de traduction avec des colonnes cle/locale devient un catalogue JSON
- Migration depuis des systemes hérités : les anciens systemes exportent souvent en CSV ; les nouveaux systemes consomment souvent du JSON
- Chargement de donnees dans des LLM : le JSON structure est plus facile a raisonner pour ChatGPT, Claude que le CSV
Comment le CSV devient JSON
Un fichier CSV :
name,age,city
Alice,30,New York
Bob,25,London
Devient un tableau JSON d'objets :
[
{"name": "Alice", "age": "30", "city": "New York"},
{"name": "Bob", "age": "25", "city": "London"}
]
La premiere ligne (en-tetes) devient les cles. Chaque ligne suivante devient un objet.
Comment convertir
- Collez vos donnees CSV : entrez des donnees separees par des virgules avec une ligne d'en-tete.
- Choisissez votre delimiteur : selectionnez virgule, point-virgule, tabulation ou pipe. L'outil detecte automatiquement dans la plupart des cas.
- Copier ou telecharger : revisez la sortie JSON et copiez-la dans votre presse-papiers ou telechargez-la sous forme de fichier
.json.
Une breve histoire du CSV et du JSON
Le CSV est le format le plus ancien de plusieurs decennies. Le concept de texte separe par des virgules remonte aux annees 1960 et 1970 comme moyen d'echanger des donnees entre programmes mainframe. IBM Fortran (1972) prenait en charge l'E/S dirigee par liste qui produisait une sortie separee par des virgules. CSV n'a jamais ete formellement standardise jusqu'au RFC 4180 en 2005, moment auquel des milliards de fichiers CSV existaient deja avec des variations subtiles (regles de citation, fins de ligne, encodage).
JSON est arrive bien plus tard : Douglas Crockford l'a specifie en 2001, RFC formel 4627 en 2006, ECMA-404 en 2013. JSON a ete concu pour le web ; CSV a ete concu pour le traitement par lots de donnees sur mainframes. Les deux formats ont des forces differentes :
| Aspect | CSV | JSON |
|---|---|---|
| Structure | Table plate (lignes + colonnes) | Imbrique, hierarchique |
| Types | Sans type (tout est texte) | Type (chaine, nombre, bool, null, tableau, objet) |
| En-tetes | Convention premiere ligne | Noms de champ par objet |
| Taille | Compact pour donnees tabulaires | Plus verbeux, inclut la structure |
| Outils | Excel, tous les tableurs | Tout langage de programmation moderne |
| Streaming | Ligne par ligne facile | Analyse de fichier entier par defaut (mais JSON Lines existe) |
| Spec stricte | RFC 4180 (2005), souvent ignoree | RFC 8259 (2017), stricte |
La conversion CSV vers JSON est essentiellement une traduction des donnees plates orientees lignes en notation d'objet cle-valeur. La plupart des difficultes residents dans la gestion des cas limites (valeurs guillemetees, delimiteurs integres, encodages non-UTF-8) que la specification CSV n'a pas anticipes.
Gerer les donnees CSV delicates
Valeurs guillemetees : lorsqu'une valeur contient le caractere delimiteur (comme une adresse avec une virgule), elle doit etre encadree de guillemets doubles : "New York, NY". Les bons convertisseurs gerent cela correctement.
Valeurs vides : les cellules vides deviennent des chaines vides en JSON ("field": ""). Si vous en avez besoin comme null, vous devrez peut-etre post-traiter la sortie.
Valeurs numeriques : CSV n'a pas de types de donnees. Tout est texte. La sortie JSON aura des nombres sous forme de chaines ("30" et non 30). Si votre application a besoin de nombres reels, parsez-les apres conversion.
Sauts de ligne dans les valeurs : certains fichiers CSV ont des valeurs multilignes (encadrees de guillemets). Tous les convertisseurs ne gerent pas cela, testez avec vos donnees specifiques.
Guillemets echappes : un guillemet a l'interieur d'une valeur guillemetee est echappe en le doublant : "Elle a dit ""bonjour""". La plupart des analyseurs gerent cela correctement.
Espaces de fin : des espaces supplementaires dans les en-tetes comme name ,age, city creent des cles desordonnees. Les bons convertisseurs trim par defaut ; certains preservent les espaces litteralement.
Marques d'ordre des octets : un BOM UTF-8 au debut du fichier peut apparaitre comme les trois premiers caracteres du premier en-tete. Certains convertisseurs suppriment le BOM ; d'autres non.
Differentes fins de ligne : les fichiers CSV de Windows ont CRLF, Unix ont LF, anciens Macs avaient CR. Les analyseurs robustes gerent les trois.
Variantes de format de sortie
Les convertisseurs CSV vers JSON offrent souvent plusieurs options de sortie :
| Sortie | Exemple | Meilleure utilisation |
|---|---|---|
| Tableau d'objets | [{"a":1},{"a":2}] | Reponses API, par defaut |
| Objet d'objets (cle par premiere colonne) | {"id1":{"name":"x"},"id2":{...}} | Tables de recherche, enregistrements cles par ID |
| Tableau de tableaux | [["a","b"],[1,2],[3,4]] | Donnees de lignes brutes preservant l'ordre |
| Colonnaire | {"a":[1,3],"b":[2,4]} | Analyse statistique (compatible pandas) |
| JSON Lines (NDJSON) | {"a":1}\n{"a":2} | Streaming, traitement de journaux |
| Imbrique par en-tete | [{"address":{"city":"NY"}}] depuis address.city | Donnees imbriquees depuis CSV plat |
Le defaut est tableau d'objets, qui fonctionne pour presque tous les scenarios d'API web. JSON Lines est utile si vous avez des millions de lignes et avez besoin d'un traitement en streaming.
Inference de type
Certains convertisseurs offrent l'inference de type :
- Off (par defaut sur) : chaque valeur est une chaine. Previsible mais necessite que le code recepteur la parse.
- Auto : detecter les nombres, booleens, null, dates.
"30"devient30,"true"devienttrue,""devientnull. Pratique mais sujet aux erreurs (un code postal comme"00525"devient525). - Pilote par schema : fournir un schema JSON ou des indices de type de colonne ; convertir chaque colonne dans son type specifie. Mieux pour les donnees de production.
Pour un usage interne ou vous controlez les donnees, l'auto-inference fait gagner du temps. Pour une entree non fiable, laissez les types comme chaines et parsez explicitement dans votre code.
Pieges courants
- Zeros de tete perdus : une colonne de numeros de telephone, codes postaux ou ID de produit avec zeros de tete (
00525,09876) devient un nombre perdant le zero a moins que vous ne le gardiez comme chaine. Citez ces colonnes ou desactivez l'inference de type. - Injection de formule Excel : une valeur CSV commencant par
=(=SUM(...)) etait a l'origine une formule de tableur. Convertir en JSON garde le texte litteral mais si vous reimportez vers un tableur, la formule s'execute. Supprimez les=,+,-,@de tete pour les CSV televerses par l'utilisateur. - Incompatibilite d'encodage : un CSV exporte d'Excel sur Windows est souvent Windows-1252 ou Latin-1, pas UTF-8. Les caracteres non-ASCII (accents, emoji) deviennent du mojibake a la conversion. Enregistrez le CSV en UTF-8 d'abord.
- Nombre de colonnes incoherent : certaines lignes ont plus ou moins de champs que l'en-tete. Les analyseurs stricts echouent ; les analyseurs indulgents remplissent ou tronquent. Verifiez que vos donnees ont une forme coherente.
- En-tetes dupliques :
name, name, ageest ambigu. La plupart des convertisseurs ne gardent que la derniere valeur avec le nom duplique ; certains les rendentname,name_2. Renommez a la source. - En-tetes avec points ou crochets : une colonne
address.citypeut etre interpretee comme du JSON imbrique ({"address":{"city":...}}) par certains convertisseurs. Choisissez le bon mode de sortie. - Caracteres de citation mixtes : certaines sources utilisent des guillemets simples ou des guillemets typographiques (boucles) au lieu de guillemets doubles droits. La plupart des convertisseurs attendent des doubles droits.
- Saut de ligne final : un CSV se terminant par
\npeut produire ou non un objet vide supplementaire. Coupez les espaces de fin. - Ligne d'en-tete manquante : si votre CSV n'a pas d'en-tete, le convertisseur peut utiliser la premiere ligne de donnees comme cles (faux). Ajoutez des en-tetes ou utilisez la sortie tableau de tableaux.
- Tres gros fichiers : un CSV de 100 Mo produit un JSON de 200+ Mo. La memoire du navigateur peut avoir du mal. Pour les gros fichiers, utilisez JSON Lines (NDJSON) et traitez ligne par ligne.
Conseils
- Verifiez vos en-tetes : la premiere ligne doit etre des noms de colonne propres et uniques. Les espaces, caracteres speciaux ou en-tetes dupliques creeront des cles JSON desordonnees.
- Verifiez le delimiteur : les CSV europeens utilisent souvent des points-virgules au lieu de virgules (parce que les virgules sont utilisees comme separateurs decimaux dans de nombreux pays europeens). Si la conversion semble fausse, essayez un autre delimiteur.
- Formatez la sortie : apres la conversion, passez le JSON par un formateur pour le rendre lisible avant de l'utiliser dans votre projet.
- Verifiez les resultats par sondage : comparez quelques lignes de la sortie JSON par rapport au CSV original pour vous assurer que le mapping est correct, surtout pour les fichiers avec de nombreuses colonnes.
- Enregistrez en UTF-8 depuis Excel : dans Excel, choisissez «CSV UTF-8 (delimite par des virgules)» au lieu du simple «CSV» pour eviter les problemes d'encodage. Apple Numbers et Google Sheets par defaut UTF-8.
- Utilisez un linter CSV d'abord pour les gros fichiers : des outils comme
csvlintoucsvkitattrapent les lignes mal formees avant que vous ne convertissiez. - Echantillonnez d'abord, convertissez plus tard : pour un CSV de 50 000 lignes, convertissez les 100 premieres lignes comme test, verifiez la forme de sortie, puis convertissez le reste.
- Conservez les originaux : ne supprimez jamais le CSV source. Si votre JSON semble faux, vous avez besoin de l'original pour retraiter.
- Pour les donnees profondement imbriquees, ecrivez un petit script : une conversion CSV vers JSON d'une ligne convient a ~80% des cas. Pour l'imbrication complexe (tableaux d'elements par ligne, champs conditionnels), Python avec pandas + transformation personnalisee est plus flexible que tout convertisseur general.
Confidentialite et donnees sensibles
Le convertisseur CSV vers JSON s'execute entierement dans votre navigateur. Les donnees que vous collez, le traitement intermediaire et le JSON de sortie restent tous sur votre appareil. Rien n'est televerse sur un serveur, enregistre ou partage avec qui que ce soit.
Cela importe car les CSV que vous convertissez contiennent souvent des donnees sensibles : listes de clients avec adresses e-mail et numeros de telephone, dossiers d'employes avec salaires, transactions financieres, donnees de pipeline de vente, leads marketing, analyses internes de produits, dossiers medicaux exportes des systemes EHR, notes d'etudiants, historique de paiements. Les convertisseurs CSV vers JSON en nuage enregistrent chaque collage, les conservent parfois pour «amelioration du service», et ont ete impliques dans de vraies fuites de donnees ou des listes de clients collees ont fui vers des attaquants surveillant les journaux. Un convertisseur base sur navigateur a une exposition nulle : les donnees ne quittent jamais votre machine.
La conversion basee sur navigateur fonctionne aussi hors ligne une fois la page chargee, utile pour traiter des donnees dans les avions, dans des environnements securises sans acces internet, ou partout ou vous ne pouvez pas ou ne devriez pas coller des donnees clients ou financieres dans un service tiers.
Questions fréquentes
Que se passe-t-il avec la ligne d'en-tête ?
La première ligne est utilisée comme clés pour les objets JSON. Chaque ligne suivante devient un objet avec ces clés. Par exemple, un en-tête « name,age » avec une ligne « Alice,30 » devient {"name":"Alice","age":"30"}.
Quels délimiteurs sont pris en charge ?
Virgule, point-virgule, tabulation et barre verticale sont tous pris en charge. L'outil peut détecter automatiquement le délimiteur ou vous pouvez le choisir manuellement.
Gère-t-il les virgules à l'intérieur des valeurs ?
Oui. Les valeurs entourées de guillemets doubles (comme « New York, NY ») sont correctement gérées, la virgule à l'intérieur des guillemets est traitée comme faisant partie de la valeur, pas comme un séparateur.
Mes données sont-elles envoyées sur un serveur ?
Non. Toute la conversion se fait dans votre navigateur. Vos données ne quittent jamais votre appareil.