Ce que fait ce convertisseur
Le CSV est le format d’export courant des tableurs et des bases de données : un enregistrement par ligne, des valeurs séparées par des virgules (ou des points-virgules). Le JSON est ce qu’attendent la plupart des API, du code JavaScript et des bases NoSQL. Cet outil pour convertir un CSV en JSON transforme l’un en l’autre.
Avec une ligne d’en-tête, chaque ligne du CSV devient un objet JSON, et les noms de colonnes deviennent les clés. Sans ligne d’en-tête, chaque ligne devient un tableau de valeurs. L’analyse est faite par Papa Parse, une bibliothèque CSV éprouvée qui gère les champs entre guillemets, les virgules à l’intérieur des guillemets et les sauts de ligne à l’intérieur des cellules.
Mode d’emploi
- Choisissez CSV vers JSON (ou JSON vers CSV pour l’autre sens).
- Collez vos données, appuyez sur Ouvrir un fichier pour charger un fichier
.csvou.tsv, ou appuyez sur Exemple. - Réglez les options. Le JSON se met à jour à chaque changement :
- Séparateur : Détecter, Virgule, Point-virgule, Tabulation ou Barre verticale.
- Sortie : 2 espaces, 4 espaces ou Minifié.
- La première ligne est l’en-tête : objets avec clés nommées si activé, tableaux sinon.
- Convertir les nombres et true/false : transforme
12en nombre ettrueen booléen. Désactivé, chaque valeur reste une chaîne. - Ignorer les lignes vides : ignore les lignes vides que les tableurs ajoutent souvent à la fin.
- Appuyez sur Copier ou Télécharger pour enregistrer le résultat en fichier
.json.
La ligne d’état indique combien de lignes et de colonnes ont été lues et quel séparateur a été détecté.
Exemple
Ce CSV, avec un nom entre guillemets qui contient une virgule :
id,name,email,city,signup_date,active,orders
1,Ada Lovelace,[email protected],London,2024-03-01,true,12
2,"Hopper, Grace",[email protected],New York,2024-04-17,false,3
devient :
[
{
"id": 1,
"name": "Ada Lovelace",
"email": "[email protected]",
"city": "London",
"signup_date": "2024-03-01",
"active": true,
"orders": 12
},
{
"id": 2,
"name": "Hopper, Grace",
"email": "[email protected]",
"city": "New York",
"signup_date": "2024-04-17",
"active": false,
"orders": 3
}
]
Les guillemets autour de « Hopper, Grace » ont protégé la virgule du nom. Les identifiants et les nombres de commandes sont devenus des nombres, true et false des booléens, et les dates sont restées des chaînes puisque le JSON n’a pas de type date.
Un export Excel français
Un tableur réglé en français exporte en général le CSV avec des points-virgules, des décimales à virgule et, selon les cas, des booléens écrits VRAI et FAUX. Voici ce que l’outil renvoie réellement pour un tel fichier :
nom;ville;code_postal;prix;actif
Dupont;Besançon;25000;2,50;VRAI
Martin;Ajaccio;20000;12;true
[
{
"nom": "Dupont",
"ville": "Besançon",
"code_postal": 25000,
"prix": "2,50",
"actif": "VRAI"
},
{
"nom": "Martin",
"ville": "Ajaccio",
"code_postal": 20000,
"prix": 12,
"actif": true
}
]
Le point-virgule est détecté tout seul et les accents sont conservés. 2,50 reste une chaîne, car ce n’est pas un nombre JSON valide. VRAI reste aussi une chaîne : seuls true et false (et leurs variantes en majuscules anglaises) sont convertis en booléens. Si vous avez besoin de vrais nombres, remplacez les virgules décimales par des points avant la conversion, par exemple avec l’outil rechercher et remplacer.
Les valeurs qui restent du texte
Transformer en nombre tout ce qui y ressemble peut abîmer des données. Ce convertisseur garde une valeur en texte quand la convertir la modifierait :
[
{
"name": "Ada",
"zip": "02134",
"phone": "0207 946 0000"
}
]
Le code postal garde son zéro de tête. La même règle s’applique aux identifiants qui commencent par zéro et aux entiers plus longs que ce que JavaScript peut stocker exactement. Un prix écrit avec une virgule décimale, comme 2,50 dans un fichier à points-virgules, reste aussi une chaîne, car ce n’est pas un nombre JSON valide. Les numéros de téléphone français comme 06 12 34 56 78 restent également du texte.
JSON vers CSV
Appuyez sur JSON vers CSV et collez un tableau d’objets. Chaque clé présente dans au moins un objet devient une colonne, dans l’ordre de première apparition. Avec Aplatir les objets imbriqués activé, les données imbriquées reçoivent des noms de colonnes pointés :
id,name,address.city,address.zip,tags
1,Ada,London,NW1,"[""admin"",""dev""]"
2,Grace,New York,,
Grace n’avait pas de code postal, donc cette cellule est vide. Le tableau de tags a été écrit sous forme de texte JSON, avec ses guillemets doublés comme l’exige le format CSV. Un tableau de tableaux est écrit ligne par ligne, sans en-tête. Appuyez sur Télécharger pour l’enregistrer en fichier .csv qu’Excel, Numbers et Google Sheets savent ouvrir. Pour un Excel en français, choisissez le séparateur Point-virgule afin que les colonnes s’ouvrent directement au bon endroit.
Quand les lignes ne correspondent pas
Si une ligne a plus ou moins de valeurs que l’en-tête, le convertisseur produit quand même le JSON et signale le problème par numéro de ligne du tableur, par exemple « Ligne 3 : Too many fields: expected 2 fields but parsed 3 » (trop de champs, 2 attendus, 3 trouvés ; le texte du message vient de la bibliothèque Papa Parse et reste en anglais). La ligne 1 est l’en-tête. Un guillemet ouvert et jamais fermé est signalé de la même façon. Corrigez la ligne dans votre fichier et collez-le de nouveau.
Conseils
- Vérifiez le JSON avec le formateur JSON, qui peut aussi trier les clés et minifier.
- Besoin de YAML pour un fichier de configuration ? Convertissez ici en JSON, puis utilisez le convertisseur JSON en YAML.
- Pour afficher les données dans un README, le générateur de tableau Markdown accepte le même CSV ou les mêmes cellules de tableur.
- Désactivez Convertir les nombres et true/false quand chaque valeur doit rester une chaîne, par exemple avant un import dans un système qui fait son propre typage.
Autres façons de convertir un CSV en JSON
- Python : le DictReader du module csv intégré lit les lignes comme des dictionnaires, et json.dump les écrit.
- csvkit : la commande
csvjsonconvertit un fichier CSV en JSON dans un terminal. - Excel et Google Sheets n’ont pas d’export JSON. Enregistrez d’abord en CSV, puis convertissez ici.
- jq peut faire l’inverse, de JSON vers CSV, avec son filtre
@csv.
Tout se passe dans votre navigateur. Les gros fichiers prennent un peu plus de temps, et rien n’est envoyé.