ExplicationCSV en JSON

CSV en JSON : comment sont convertis les en-têtes, les nombres et les cellules vides

ParDéveloppeur logiciel
Publié le 5 min de lecture
Une feuille CSV agrandie à côté de grilles marquées abc, 123 et null, qui représentent le typage des valeurs en JSON

Quand un CSV devient du JSON, chaque valeur doit recevoir un type, car le CSV ne stocke que du texte alors que le JSON distingue les chaînes, les nombres, les booléens et null. Le convertisseur CSV en JSON ne transforme une valeur en nombre ou en booléen que si aucune information ne peut être perdue, et garde tout le reste en chaîne.

Cet article passe en revue chaque règle avec des exemples, pour que vous sachiez ce que votre code recevra et comment préparer un CSV qui se convertit proprement.

Sur cette page
  1. Pourquoi la conversion CSV en JSON a-t-elle besoin de règles de typage ?
  2. Quand une valeur devient-elle un nombre ?
  3. Et les booléens et les dates ?
  4. Que deviennent les cellules vides ?
  5. Comment les en-têtes deviennent-ils des clés ?
  6. Virgules, guillemets et retours à la ligne dans les valeurs
  7. Types CSV en JSON : FAQ

À retenir

  • Les nombres simples deviennent des nombres JSON ; les valeurs avec des zéros initiaux, un signe plus, un exposant ou plus de 15 chiffres restent des chaînes.
  • true et false (en minuscules ou en majuscules) deviennent des booléens.
  • Les cellules vides et les valeurs finales manquantes deviennent null.
  • Les en-têtes vides sont nommés column_1, column_2 et ainsi de suite, et les doublons reçoivent un suffixe comme name_2.

Pourquoi la conversion CSV en JSON a-t-elle besoin de règles de typage ?

Un fichier CSV n'a pas de types. Le texte 42 peut être une quantité, un code ou une partie d'un nom. Le JSON, défini par la RFC 8259, possède des types distincts pour les chaînes, les nombres, les booléens et null. Un convertisseur doit donc trancher, et une décision imprudente peut corrompre les données : transformer le code postal 01000 en nombre 1000, par exemple.

Quand une valeur devient-elle un nombre ?

Une valeur ne devient un nombre JSON que s'il s'agit d'un décimal simple, sans zéros initiaux et avec 15 chiffres significatifs au maximum. Quinze chiffres, c'est la précision qu'un nombre standard en double précision conserve exactement, et c'est ainsi que JavaScript et la plupart des analyseurs JSON stockent les nombres.

Les valeurs qui deviennent des nombres
Valeur CSVJSONRaison
4242Entier simple
-3.75-3.75Décimal simple
0.50.5Un seul zéro avant le point ne pose pas de problème
007"007"Les zéros initiaux seraient perdus
+44"+44"Un signe plus indique souvent un indicatif téléphonique
1e5"1e5"Les exposants sont souvent des codes, pas des calculs
1,250.00"1,250.00"Les séparateurs de milliers ne sont pas numériques
12345678901234567"12345678901234567"Au-delà de 15 chiffres, la valeur serait arrondie

Et les booléens et les dates ?

Les mots true et false, en minuscules ou en majuscules, deviennent des booléens JSON. Des mots comme yes, no, oui, non, Y ou 1 restent tels quels, car leur signification varie d'un jeu de données à l'autre.

Le JSON n'a pas de type date : les dates restent donc des chaînes, exactement comme dans le CSV. Les dates ISO comme 2026-10-09 sont les plus faciles à analyser pour le code ; si votre export utilise 09/10/2026, pensez à changer d'abord le format de date dans votre tableur.

Que deviennent les cellules vides ?

Les cellules vides deviennent null. Les lignes plus courtes que la ligne d'en-tête reçoivent aussi null pour les colonnes manquantes. Chaque objet a donc les mêmes clés, ce qui évite qu'un code comme row.email échoue avec undefined.

Une ligne avec un e-mail vide
name,email,phone
Ana,,555-0100

[
  { "name": "Ana", "email": null, "phone": "555-0100" }
]

Les lignes entièrement vides sont ignorées : une ligne vide égarée à la fin du fichier ne crée pas d'objet vide.

Comment les en-têtes deviennent-ils des clés ?

  • Les espaces autour des noms sont supprimés. " Price " devient "Price".
  • Les en-têtes vides reçoivent un nom de position. Une troisième colonne sans nom devient column_3.
  • Les en-têtes en double reçoivent un suffixe. Deux colonnes appelées name deviennent name et name_2, si bien qu'aucune valeur n'en écrase une autre.
  • Les valeurs en trop reçoivent aussi une clé. Si une ligne a plus de cellules que l'en-tête, les colonnes supplémentaires sont nommées selon leur position.
  • Les autres caractères sont conservés. Un en-tête comme Prix unitaire (€) reste tel quel. Renommez-le dans le CSV si vous préférez des clés adaptées au code.

Virgules, guillemets et retours à la ligne dans les valeurs

Les valeurs entourées de guillemets doubles peuvent contenir le séparateur, des retours à la ligne et des guillemets doublés, selon les règles habituelles de la RFC 4180. "Paris, France" reste une seule valeur, et une adresse sur deux lignes garde son retour à la ligne sous la forme \n dans la chaîne JSON.

Prêt à essayer ? Suivez le guide pas à pas CSV en JSON, ou comparez les deux formats dans CSV ou JSON.

Types CSV en JSON : FAQ

Pourquoi mon code postal est-il une chaîne dans le JSON ?

Il commence par un zéro. Le convertir en nombre supprimerait ce zéro, il est donc conservé en chaîne.

Pourquoi certains nombres sont-ils des chaînes ?

Les valeurs avec des zéros initiaux, un signe plus, un exposant, des séparateurs de milliers ou plus de 15 chiffres restent des chaînes pour éviter toute perte d'information.

Une cellule vide devient-elle une chaîne vide ?

Non. Les cellules vides deviennent null, que le code peut tester clairement.

Que se passe-t-il si deux colonnes ont le même en-tête ?

La seconde reçoit un suffixe, comme name_2, et les deux valeurs sont conservées.

Les dates sont-elles converties ?

Non. Le JSON n'a pas de type date : les dates restent des chaînes, exactement comme dans le CSV.

Des types prévisibles, moins de bugs

Les règles reposent sur un seul principe : ne convertir une valeur que si rien ne peut être perdu. Préparez vos en-têtes et vos formats de nombres en conséquence, et le JSON correspondra à ce que votre code attend.

À lire ensuite