Aller au contenu

Convertisseur CSV vers JSON

Collez du CSV et obtenez un tableau JSON d'objets indexés par votre ligne d'en-tête, ou un tableau de tableaux s'il n'y a pas d'en-tête. Changez le sens pour reconvertir un tableau JSON d'objets plats en CSV. Les virgules entre guillemets, les guillemets doublés et les sauts de ligne dans les champs sont lus correctement, et la conversion s'effectue dans votre navigateur. Gratuit, sans inscription.

Direction

Comment utiliser le convertisseur CSV vers JSON

  1. 1. Choisissez un sens. CSV → JSON est le réglage par défaut ; JSON → CSV attend un tableau JSON d'objets plats.
  2. 2. Réglez les options. Le délimiteur peut être détecté automatiquement ou fixé à la virgule, au point-virgule ou à la tabulation ; pour JSON → CSV, la détection automatique écrit des virgules. Pour CSV → JSON, vous choisissez aussi une indentation de 2 espaces, de 4 espaces ou de tabulation, et si la première ligne contient les en-têtes.
  3. 3. Collez et convertissez. Appuyez sur Convertir. Les problèmes — un guillemet non fermé, un JSON invalide, un tableau qui n'est pas composé d'objets — s'affichent sous forme de message au lieu d'un résultat.
  4. 4. Copiez ou téléchargez. Copier le résultat copie la sortie ; le bouton de téléchargement l'enregistre sous data.json ou data.csv.

Comment le CSV est lu

Le CSV paraît simple, mais ne l'est pas : le même fichier peut utiliser des virgules, des points-virgules ou des tabulations, et un champ peut contenir le caractère même qui sépare les champs. La référence la plus proche est la RFC 4180, qui est un document informatif plutôt qu'une norme. Elle précise qu'un champ contenant une virgule, un guillemet double ou un saut de ligne doit être entouré de guillemets doubles, et qu'un guillemet double à l'intérieur d'un tel champ s'écrit deux fois. Le convertisseur suit ces règles et ajoute quelques tolérances :

  • Champs entre guillemets. Un champ qui commence par un guillemet double va jusqu'au guillemet de fermeture ; il peut donc contenir des délimiteurs, des sauts de ligne et "" pour un guillemet littéral. Un guillemet jamais fermé arrête la conversion et signale la ligne où il a commencé.
  • Fins de ligne. LF, CRLF et un simple CR terminent tous une ligne, et les lignes vides sont ignorées.
  • Détection du délimiteur. En mode automatique, le convertisseur ne regarde que la première ligne et retient le point-virgule, la virgule ou la tabulation qui y apparaît le plus souvent ; à égalité, la virgule l'emporte. Si la première ligne est inhabituelle — une seule colonne, par exemple, ou une ligne de titre —, choisissez le délimiteur vous-même. La RFC 4180 ne connaît que la virgule ; les points-virgules sont courants dans les fichiers exportés depuis des tableurs réglés sur une locale européenne.
  • Tout est du texte. Le convertisseur ne devine pas les types : 2020 devient la chaîne "2020", pas un nombre, et une cellule vide devient "", pas null. Convertissez les types ensuite si votre code en a besoin.

Exemple détaillé

En-tête

name,note,year

Ligne 1

"Smith, Jane","Said ""hello""",2020

Ligne 2

Lee,short

Résultat

Deux objets. Smith, Jane a pour note Said "hello" et pour année "2020" ; Lee a pour note short et pour année "".

La virgule dans Smith, Jane reste dans un seul champ grâce aux guillemets, et les guillemets doublés se réduisent à un seul. La ligne de Lee a une cellule de moins, donc l'année manquante devient une chaîne vide ; une ligne avec des cellules en trop perd ces dernières, car il n'y a pas d'en-tête pour les nommer. Décochez la case La première ligne contient les en-têtes et la même entrée devient un tableau de tableaux — [["name","note","year"],…] —, les lignes courtes restant courtes.

Les noms d'en-tête en double entrent en collision : avec deux colonnes nommées id, la seconde l'emporte et la première est perdue ; renommez-en une d'abord.

Le sens inverse : JSON vers CSV

Le sens inverse attend un tableau de premier niveau dont tous les éléments sont des objets. La ligne d'en-tête est l'union de toutes les clés, dans l'ordre de leur première apparition ; les objets aux clés différentes restent donc alignés, et une valeur absente est laissée vide. Les nombres et les booléens sont écrits tels quels, null devient une cellule vide, et tout tableau ou objet imbriqué est écrit dans sa cellule sous forme de texte JSON, entre guillemets. Si vos données sont imbriquées, aplatissez-les d'abord. Les cellules contenant le délimiteur, un guillemet ou un saut de ligne sont mises entre guillemets, les guillemets y étant doublés, et les lignes sont séparées par de simples sauts de ligne LF.

Appliquée à [{"name":"Smith, Jane","year":2020,"tags":["a","b"]},{"name":"Doe","note":"two\nlines","year":null}], le convertisseur écrit l'en-tête name,year,tags,note, une première ligne "Smith, Jane", 2020 et le texte entre guillemets ["a","b"], puis une seconde ligne pour Doe dont l'année et les tags sont vides et dont la note est le texte sur deux lignes, entre guillemets.

De quel outil avez-vous besoin ?

Vous voulezUtilisez
Convertir entre CSV et tableau JSONCette page
Voir du CSV sous forme de tableau à copier en HTMLCSV vers tableau
Faire un tableau Markdown à partir d'un CSVGénérateur de tableaux Markdown
Ne garder que certaines colonnes d'un CSVExtracteur de colonnes
Vérifier ou reformater le JSON lui-mêmeFormateur JSON
Convertir du YAML ou du XML vers le JSON, et inversementConvertisseur YAML vers JSON, Convertisseur XML vers JSON
Mettre en forme un CSV pour un travailGénérateur de tableaux LaTeX, Générateur de tableaux APA

Questions fréquentes

Comment convertir du CSV en JSON ?
Collez le CSV dans la zone de saisie avec le sens CSV → JSON sélectionné, puis appuyez sur Convertir. Si La première ligne contient les en-têtes est coché, vous obtenez un tableau d'objets indexés par les noms d'en-tête ; sans cette option, vous obtenez un tableau de tableaux. Copiez le résultat ou téléchargez-le sous data.json.
Le convertisseur gère-t-il les champs entre guillemets contenant des virgules ou des sauts de ligne ?
Oui. Un champ entouré de guillemets doubles peut contenir le délimiteur, des sauts de ligne et des guillemets doublés, comme le décrit la RFC 4180. Un guillemet d'ouverture sans guillemet de fermeture arrête la conversion et indique la ligne où le champ a commencé.
Quels délimiteurs sont pris en charge ?
La virgule, le point-virgule et la tabulation, détectés automatiquement à partir de la première ligne ou choisis à la main. Les fichiers séparés par des barres verticales et les autres délimiteurs ne sont pas pris en charge ; un extracteur de colonnes ou un rechercher-remplacer peut d'abord les remplacer par des virgules.
Pourquoi mes nombres sont-ils des chaînes dans le JSON ?
Le CSV n'a pas de types, et le convertisseur ne les devine pas : chaque valeur sort donc sous forme de chaîne, et une cellule vide sous forme de chaîne vide. Cela préserve des valeurs comme 007 ou 1e5 exactement telles qu'elles sont écrites ; convertissez les types dans votre propre code lorsque vous avez besoin de nombres.
Comment fonctionne la conversion JSON vers CSV ?
Elle attend un tableau JSON d'objets. Chaque objet devient une ligne, les colonnes sont toutes les clés rencontrées, et les objets ou tableaux imbriqués sont écrits dans leur cellule sous forme de texte JSON. Un JSON invalide est signalé avec un numéro de ligne lorsque l'analyseur de votre navigateur fournit une position.
Pourquoi mon CSV s'ouvre-t-il mal dans Excel après la conversion ?
Le fichier est en UTF-8 simple, sans marque d'ordre des octets (BOM), et utilise le délimiteur que vous avez choisi. Excel, dans une région qui attend des points-virgules, peut donc tout placer dans une seule colonne, et les caractères non latins peuvent exiger de régler l'assistant d'importation sur UTF-8. Choisir le point-virgule comme délimiteur règle souvent le premier problème.
Mes données sont-elles envoyées quelque part ?
Non. Les deux sens s'exécutent dans votre navigateur, et le texte que vous collez n'est pas envoyé à CitationEasy. Le téléchargement est généré localement.

Outils associés

Autres outils : Données, balisage et code