Pourquoi la conversion CSV vers JSON ne se résume pas à un simple changement de format
Un fichier CSV et un fichier JSON ne sont pas de simples « traductions » l’un de l’autre. Le CSV stocke toutes les données sous forme de texte brut, organisé en lignes et en colonnes, chaque cellule n’étant qu’une chaîne de caractères. Le JSON, lui, supporte des types de données distincts (nombre, booléen, null, chaîne) et peut représenter des structures hiérarchiques. La page de conversion CSV vers JSON de cet outil ne fait pas de magie: elle transforme chaque ligne en objet, chaque colonne en clé, et conserve chaque valeur avec son type d'origine. Cette différence fondamentale est la source de la plupart des surprises rencontrées par les utilisateurs.
Trois particularités distinguent cette conversion de ses pages sœurs (JSON → CSV, Excel → JSON):
- Le typage automatique est préservé – Un champ CSV contenant
"42"reste une chaîne"42"dans le JSON produit, pas le nombre42. Les prix, dates, codes postaux ou identifiants produits ne sont donc pas convertis en nombre ou en date. - Aucune imbrication possible – Le CSV est un tableau plat: chaque ligne correspond à un objet, chaque colonne à une propriété. Impossible de créer un objet imbriqué (par exemple
{ adresse: { ville: "Paris" } }) sans règles supplémentaires que l’outil n’applique pas. Pour une conversion inverse (JSON → CSV), il faudrait au contraire aplatir les objets imbriqués. - Le choix du délimiteur est crucial – L'utilisateur doit préciser si son fichier utilise une virgule, un point-virgule ou une tabulation.
À cela s’ajoute une fragilité propre au CSV: les guillemets et les sauts de ligne à l’intérieur des cellules sont mal gérés par de nombreux fichiers, et l’outil peut échouer si les règles de citation ne sont pas respectées.
Le délimiteur: le paramètre qui change tout
La page propose trois délimiteurs: virgule, point-virgule et tabulation. Ce choix n’existe pas pour les autres formats (JSON ou XLSX) car ceux-ci ont une structure autodescriptive. En CSV, le séparateur n’est pas standardisé: les pays utilisant la virgule comme séparateur décimal (France, Allemagne, etc.) emploient souvent le point-virgule comme délimiteur de champ dans les exportations Excel. Un fichier produit par un logiciel américain utilisera la virgule. Si l’utilisateur se trompe de paramètre, tout le tableau devient illisible.
L’outil détecte automatiquement le format d’entrée (CSV, JSON ou XLSX) mais ne devine pas le délimiteur. C’est à l’utilisateur de le sélectionner. Les fichiers mal formés — par exemple un CSV exporté avec des virgules dans les valeurs mais sans guillemets, ou des fichiers qui mélangent les séparateurs — sont la cause la plus fréquente d’échec d’analyse. Si l’analyse échoue, le message affiché est: Ce fichier CSV n’a pas pu être analysé.
Un bon réflexe: ouvrir le fichier CSV dans un éditeur de texte et regarder la première ligne. Si les champs sont séparés par des points-virgules, sélectionner « Point-virgule ». Si l’exportation provient d’une base de données, la tabulation est parfois utilisée pour éviter les confusions avec les virgules.
Types de données: le piège des chaînes de caractères
Le CSV ne connaît que le texte. Il n’existe pas de marqueur de type dans la spécification RFC 4180. Chaque cellule est une chaîne de caractères, point final. Quand l’outil convertit le CSV en JSON, il conserve cette représentation textuelle. Ainsi:
- Un prix
"12,50"dans une cellule devient"12,50"dans le JSON, pas le nombre12.5. - Une date
"2024-03-15"reste"2024-03-15", chaîne. - Un code postal
"75001"reste"75001". C’est une bonne chose: si l’outil convertissait automatiquement en nombre, le zéro non significatif disparaîtrait (le nombre deviendrait75001et le JSON ne distinguerait plus"75001"de75001). De nombreux traitements ultérieurs — comme une API qui attend une chaîne pour un champzipCode— échoueraient.
Ce comportement est voulu. L’utilisateur qui a besoin de nombres ou de booléens doit effectuer la conversion lui-même après le téléchargement, par exemple dans un script JavaScript avec parseInt() ou parseFloat().
Attention: si vous chargez le JSON obtenu dans un environnement qui pratique le typage automatique (par exemple un parseur JSON qui convertit les chaînes numériques en nombre), les zéros non significatifs seront perdus. Cela n’est pas du ressort de l’outil, mais une conséquence du comportement du logiciel consommateur.
Structure plate et absence de hiérarchie
Un fichier CSV est par nature un tableau bidimensionnel: des lignes, des colonnes, sans profondeur. La conversion produit donc un tableau JSON (array) d’objets plats, tous avec les mêmes clés (celles de l’en-tête). Par exemple:
[
{ "nom": "Dupont", "ville": "Lyon" },
{ "nom": "Martin", "ville": "Marseille" }
]
Il est impossible d’obtenir une hiérarchie du genre:
[
{ "nom": "Dupont", "coordonnées": { "ville": "Lyon" } }
]
sans règles de transformation supplémentaires. La page ne les applique pas. Si vous avez besoin d’une structure imbriquée, vous devez post-traiter le JSON avec un script ou utiliser un outil dédié à la conversion de CSV vers JSON hiérarchique.
C’est la raison pour laquelle la conversion inverse (JSON → CSV) doit aplatir les objets, ce qui peut faire perdre de l’information.
Fragilité des guillemets et des sauts de ligne
Le standard CSV (RFC 4180) prévoit que les champs contenant des virgules, des guillemets ou des sauts de ligne soient entourés de guillemets doubles. Les guillemets à l’intérieur d’un champ doivent être doublés (""). En pratique, de nombreux fichiers CSV ne respectent pas ces règles, ou les appliquent de manière incomplète.
Les situations qui font échouer la conversion sont:
- Virgules non échappées: une valeur comme
"Paris, France"doit être écrite"Paris, France"(guillemets autour). Si l’exportation omet les guillemets, l’analyseur interprète la virgule comme un délimiteur et décale toutes les colonnes restantes. - Sauts de ligne dans les cellules: un champ contenant un retour à la ligne (par exemple une adresse multiligne) doit être entre guillemets. Sans cela, le saut de ligne est interprété comme un changement de ligne dans le tableau et le nombre de colonnes devient incohérent.
- Guillemets non doublés: si une cellule contient un guillemet simple (par exemple une mesure de 10 pouces:
10"), il doit être écrit10"". Sinon l’analyse s’arrête.
L’outil renvoie un message d’erreur clair dans ces cas: Ce CSV n’a pas pu être analysé. Il inclut également la gestion des sauts de lignes correctement échappés: ils sont préservés dans les valeurs JSON sous forme de . Par exemple, une adresse multiligne deviendra une chaîne avec des retours à la ligne littéraux.
Cas limites et messages d’erreur explicites
La page définit des seuils pour éviter les blocages ou les conversions trop longues. Les messages d’erreur suivants peuvent apparaître:
| Condition | Message affiché |
|---|---|
| Mauvais type de fichier | Choisissez un fichier CSV, JSON ou XLSX. |
| Fichier trop volumineux | Ce fichier est trop volumineux. Utilisez un fichier de moins de ‹max›. |
| Aucune ligne de données | Ce fichier n’a aucune ligne de tableau. |
| Conversion trop longue | Cette conversion prend trop de temps. Essayez un fichier plus petit. |
| Échec d’analyse CSV | Ce CSV n’a pas pu être analysé. |
Ces limites sont de 8 Mo pour la taille du fichier, 10 000 lignes et 200 colonnes. Si vous travaillez avec un fichier volumineux, il est conseillé de réduire le nombre de lignes en amont ou de fractionner le fichier.
L'outil traite les fichiers XLSX et JSON en entrée. Si vous uploadez un fichier XLSX, l’outil interprète d’abord son contenu comme un tableau (en ignorant les formules et la mise en forme) puis convertit ce tableau. Le comportement est similaire.
FAQ
Pourquoi mon JSON conserve-t-il les zéros non significatifs alors qu’un autre outil les supprime? Parce que cet outil traite toutes les valeurs CSV comme des chaînes de caractères. Les zéros en tête ne sont donc pas interprétés comme des nombres. Si vous chargez le JSON dans un parseur qui convertit automatiquement les chaînes numériques, les zéros pourront disparaître. C’est un comportement du logiciel consommateur, pas de l’outil.
Mon fichier CSV utilise des virgules dans les valeurs, mais l’outil échoue. Que faire?
Vérifiez que les champs contenant des virgules sont entourés de guillemets doubles. Par exemple: "Paris, France". Si le fichier n’a pas été exporté avec des guillemets, vous devrez le retravailler dans un tableur (Excel, LibreOffice) en demandant une exportation CSV plus stricte ou en utilisant un délimiteur alternatif comme la tabulation.
Puis-je convertir un fichier CSV avec des sauts de ligne dans certaines cellules?
Oui, à condition que ces cellules soient correctement encadrées de guillemets. Les sauts de ligne seront alors conservés dans le JSON sous forme de . Sinon, l’analyse échouera et le message Ce fichier CSV n’a pas pu être analysé. s’affichera.
Pourquoi les nombres comme "12,50" ne deviennent-ils pas 12.5 dans le JSON?
Parce que le CSV ne porte pas d’information de type. L’outil laisse chaque valeur sous forme de texte. Si vous avez besoin d’un nombre, vous devez convertir après le téléchargement, par exemple en remplaçant la virgule décimale par un point et en appliquant parseFloat().
Puis-je créer un JSON avec des objets imbriqués à partir d’un CSV? Non, pas directement avec cet outil. Le CSV est un tableau plat, donc la sortie est un tableau d’objets plats. Pour obtenir une hiérarchie, il faut post-traiter le JSON ou utiliser un outil spécialisé.
L’outil traite-t-il mes données sur un serveur? La conversion s’exécute entièrement dans le navigateur. Aucun fichier n’est envoyé vers un serveur. C’est un point important pour la confidentialité des données sensibles.