Convertisseur CSV vers JSON

Collez du CSV (ou TSV) à gauche, obtenez un tableau JSON d'objets à droite. En-têtes détectés, types numériques et booléens auto. Sans upload.

  1. Collez votre CSV dans la zone de texte à gauche.
  2. Cliquez sur « Convertir en JSON ». La première ligne est traitée comme en-têtes.
  3. Copiez le tableau JSON ou téléchargez-le en data.json.
  4. TSV (séparé par tabulation) et autres délimiteurs sont détectés automatiquement par PapaParse.
Que fait-il ?

Analyse CSV (style RFC 4180) en tableau JSON où chaque clé correspond à une colonne d'en-tête. Champs entre guillemets, virgules intégrées, guillemets doubles échappés, fins de ligne CRLF / LF — tout est géré. Nombres, booléens et valeurs null-like (« true », « false », vide) sont typés automatiquement. Le délimiteur est auto-détecté — vous pouvez coller TSV, point-virgule, ou pipe et ça fonctionne.

Exemple

Entrée CSV :

name,age,role
Ada,36,engineer
Grace,40,scientist

Sortie JSON :

[
  {"name": "Ada", "age": 36, "role": "engineer"},
  {"name": "Grace", "age": 40, "role": "scientist"}
]

Pièges CSV courants et comment les gérer

CSV semble simple mais a plus de cas limites qu'on ne le pense. Voici les schémas qui produisent des sorties surprenantes.

  • Virgules intégrées sans guillemets. Un champ comme `Smith, John` (sans guillemets) est coupé en deux colonnes. Entourez-les de guillemets doubles : `"Smith, John"`.
  • Guillemets doubles à l'intérieur d'un champ. Dans un champ entre guillemets, un `"` littéral est échappé en le doublant : `"He said ""hi"""` décode en `He said "hi"`. L'échappement par antislash (`\"`) n'est pas standard et non supporté.
  • Nombre de colonnes incohérent. Les lignes avec moins de colonnes que l'en-tête obtiennent null pour les clés manquantes ; celles avec plus de colonnes sont signalées en avertissement de parseur. La conversion se termine quand même, mais vérifiez la sortie.
  • IDs numériques qui perdent les zéros initiaux. `007` est parsé en nombre 7, pas en chaîne « 007 ». Si les zéros importants (codes postaux, numéros), pré-traitez en mettant le champ entre guillemets — les valeurs entre guillemets restent parsables en chaînes si vous désactivez le typage dynamique en aval.
  • BOM en début de fichier. Les CSV sauvegardés depuis Excel incluent souvent une marque d'ordre des octets UTF-8 (`\uFEFF`). Le parseur la retire, mais si vous collez les octets bruts depuis un éditeur hexa, vous verrez le BOM comme un caractère parasite sur le premier en-tête.
  • Fins de ligne mélangées. CRLF (Windows), LF (Unix) et CR (vieux Mac) sont reconnus. Si votre sortie ressemble à une seule ligne géante, le fichier n'a peut-être aucun saut — fréquent quand le CSV est généré par concaténation sans `\n`.
Questions fréquentes

Cela supporte-t-il les valeurs séparées par tabulation (TSV) ?

Oui. PapaParse auto-détecte le délimiteur dans le premier kilo-octet. Tabs, points-virgules, pipes et virgules fonctionnent sans configuration. Si la détection se trompe (rare sur de vraies données), séparez mieux vos champs ou pré-traitez.

Et si mon CSV n'a pas d'en-tête ?

La configuration actuelle suppose que la première ligne est l'en-tête. Sans en-tête, ajoutez une ligne synthétique comme `a,b,c` avant de coller — ou utilisez `header: false` avec PapaParse en ligne de commande si vous voulez un tableau de tableaux.

Comment les dates sont-elles gérées ?

Elles restent en chaînes. Le parseur n'auto-type que nombres et booléens — le parsing de date n'est volontairement pas fait car l'ambiguïté de format (`01/02/03` = 2 janvier aux États-Unis, 1ᵉʳ février au Royaume-Uni) est trop risquée. Parsez en aval où vous connaissez la convention source.

Puis-je convertir de très gros fichiers CSV ?

Jusqu'à environ 50 Mo avant que le navigateur ne devienne lent. Le goulot est la zone de texte, pas le parseur — pour des fichiers plus gros, lancez PapaParse en ligne de commande. La bibliothèque est la même.

Mon CSV est-il envoyé quelque part ?

Non. Tout s'exécute dans votre navigateur — vos données sont parsées par JavaScript sur cette page et ne sont jamais envoyées à un serveur. Vérifiez dans les outils développeur : zéro requête réseau quand vous cliquez sur Convertir.

Comment obtenir un JSON de forme différente (imbriqué, groupé) ?

Cet outil produit un tableau plat d'objets plats — c'est ce que CSV représente. Pour une structure imbriquée, post-traitez la sortie avec un script (groupement par colonne, renommage par préfixe, etc.). Encoder une hiérarchie dans CSV cause souvent plus de problèmes qu'autre chose.