Convertir un CSV en JSON
Transformez un fichier CSV ou un tableau collé en JSON propre — nombres et booléens typés, objets imbriqués construits à partir des en-têtes à points, et exactement la forme qu'attend votre code.
- Jamais conservé
- Pas de file d'attente, pas d'attente
- Sans inscription, sans filigrane
Comment ça marche
Ajoutez un CSV
Déposez un fichier .csv ou .tsv, ou collez les données. Le séparateur et l'encodage sont détectés pour vous.
Choisissez la forme
Un tableau d'objets, un tableau de tableaux, un objet indexé par la première colonne, ou JSON Lines — plus les types, les valeurs vides et l'indentation.
Copiez ou téléchargez
Copiez le JSON dans le presse-papiers ou enregistrez-le en fichier .json.
Là où le CSV est plus flou qu'il n'y paraît
Le CSV n'a pas de vrai standard — il existe une spécification indicative de 2005 qui décrit ce que font la plupart des outils, et une foule de logiciels qui font autre chose. La première tâche consiste donc à déterminer ce qu'est réellement le fichier : si les valeurs sont séparées par des virgules, des points-virgules ou des tabulations (les paramètres régionaux européens exportent des points-virgules, car la virgule y sert de séparateur décimal), si la première ligne est un en-tête, et comment les guillemets sont gérés. Un champ entre guillemets peut légalement contenir des virgules, des sauts de ligne et des guillemets doublés : c'est pourquoi découper sur les virgules est la mauvaise façon de le lire, et pourquoi un analyseur naïf corrompt tout fichier contenant une adresse.
Les types sont la deuxième tâche, et le JSON a des exigences que le CSV n'a pas. Une cellule CSV contient du texte et rien d'autre ; le JSON distingue nombres, chaînes, booléens et null. Il faut bien décider qui est quoi, et les décisions qui comptent sont celles qui tournent mal : un zéro initial est significatif dans un code postal, un numéro de téléphone ou une référence de compte, donc une valeur comme 01234 doit rester une chaîne au lieu de devenir le nombre 1234. Il en va de même pour les longs identifiants, qui perdent en précision en tant que nombres JSON au-delà d'environ neuf billiards.
Les dates restent le texte qu'elles étaient, car le JSON n'a pas de type date. 2024-03-05 sort sous la forme de la chaîne "2024-03-05", et c'est la réponse honnête plutôt qu'une limite — l'alternative serait de deviner, et c'est en devinant que 03/05/2024 devient mars dans un pays et mai dans un autre. Les convertir est une décision qui revient à ce qui consomme le JSON, et qui sait quel format il veut.
L'encodage est la dernière défaillance silencieuse. Un CSV ne précise pas son encodage de caractères : un fichier enregistré en Windows-1252 et lu en UTF-8 produit du charabia exactement dans les lignes contenant des noms accentués — et une marque d'ordre des octets (BOM) en début de fichier, qu'ajoute Excel, apparaît comme des caractères parasites dans le premier nom de champ si elle n'est pas gérée. Ce sont deux propriétés du CSV, et non d'un convertisseur en particulier.
Si vous cherchez autre chose
Pour les fichiers trop gros pour tenir en mémoire, ou pour tout ce qui est scripté, csvkit est conçu pour cela : csvjson --stream data.csv convertit de façon incrémentale, csvlook vous montre d'abord ce que vous avez, et csvclean répare les lignes irrégulières qui cassent tout en aval. Miller — mlr --icsv --ojson cat data.csv — fait de même à une vitesse considérable et gère le JSON délimité par lignes, ce que veulent réellement la plupart des pipelines de données.
Quand les types comptent plus que la commodité, faites la conversion dans du code, avec des types déclarés plutôt que déduits. pandas en Python avec un mappage dtype explicite, ou un petit script avec un schéma, garantit qu'un code postal reste un code postal et qu'un identifiant garde tous ses chiffres — ce qu'aucune inférence automatique ne peut garantir sur un fichier qu'elle n'a pas vu en entier.
Questions fréquentes
Quelle forme de JSON choisir ?
Un tableau d'objets — [{"name": "Ada", "age": 36}] — convient à presque toutes les API et bibliothèques. Un tableau de tableaux est le plus compact. Un objet indexé permet au code de retrouver les enregistrements par identifiant. JSON Lines place un enregistrement par ligne, pour les outils de streaming, BigQuery et les pipelines de logs.
Comment les nombres et les booléens sont-ils déterminés ?
Une fois par colonne : une colonne ne devient numérique que si toutes ses valeurs sont des nombres, si bien que "007" et 7 ne se retrouvent jamais mélangés sous une même clé. Les valeurs avec des zéros initiaux, et les identifiants trop longs pour que JavaScript les représente exactement, restent des chaînes. true et false deviennent des booléens, et les cellules vides deviennent null — ou des chaînes vides, ou sont omises, selon votre préférence.
Peut-il créer du JSON imbriqué ?
Oui. Avec l'imbrication activée, un en-tête comme address.city devient {"address": {"city": …}}, et tags.0, tags.1 deviennent un tableau.
Mes données sont-elles conservées quelque part ?
Non. Rien n'est envoyé nulle part et rien n'est conservé.
Et les points-virgules, les tabulations et les autres encodages ?
Virgules, points-virgules, tabulations et barres verticales sont détectés automatiquement, tout comme l'UTF-8, l'UTF-16 et les anciens encodages Windows : les textes accentués ou non latins arrivent intacts.
Et les noms de colonnes en double ou vides ?
Les doublons reçoivent un numéro (name, name_2) et les en-têtes vides un nom basé sur leur position (column_3) : aucune valeur n'est écrasée, et vous êtes informé de ce qui a changé.
Bon à savoir : Les dates restent sous la forme du texte de votre fichier, car le JSON n'a pas de type date. Les très gros fichiers sont limités par la mémoire de votre navigateur.
Intégrez cet outil à votre site
Gratuit pour tout blog, page de cours ou article d'aide. Collez un seul extrait de code et vos visiteurs pourront l'utiliser directement sur votre page.
Voir aussi : Outils tableur
JSON en CSV
Du JSON imbriqué aplati en colonnes propres
CSV en Excel
Du CSV en XLSX avec de vrais nombres et de vraies dates
Excel en XML
Des lignes en XML propre et bien formé
XML en Excel
Des enregistrements XML dans une feuille Excel mise en forme
Excel en CSV
N'importe quelle feuille en CSV, dans l'encodage voulu
ODS en XLSX
Tableurs LibreOffice en classeurs Excel