IA sur votre appareil : performant et privé.

CSV vers JSON

Convertissez un CSV en JSON sur votre appareil — objets, JSON Lines, valeurs typées, clés imbriquées.

  • Aucun envoi
  • 5 formes de sortie
  • Vrais nombres et booléens
  • Jusqu'à 25 Mo gratuit

Déposez un fichier CSV ici

.csv .tsv .txt .psv · jusqu'à 25.0 MB gratuit

L'aperçu JSON apparaît ici dès qu'un fichier est chargé.
Réglages
Forme de sortie
Forme de sortie

Ce qu'est le niveau supérieur du document. Chacune est un fichier différent, pas une autre mise en page.

Indentation
Indentation

Deux espaces se lisent bien dans un diff ; minifié est le plus compact.

Valeurs

Zéros initiaux, identifiants longs, numéros de téléphone, Infinity et NaN restent toujours du texte.

Cellules vides
Cellules vides

Ce que devient une cellule vide.

Format des nombres
Format des nombres

Le mode auto lit le fichier : seules les valeurs qui déclarent leur convention votent.

Clés
Casse des clés
Imbriquer les en-têtes pointés

Les en-têtes en double sont renommés et les vides numérotés : aucune colonne n'est perdue.

Lecture du fichier
0

Détecté depuis le fichier. Modifiez-les si l'aperçu semble faux.

Lot
Pro

Un lot se télécharge en un seul ZIP. La fusion réunit tous les fichiers en un document.

Limites

Gratuit : 1 fichier à la fois, jusqu'à 25.0 MB. Toutes les formes de sortie et options incluses.

Comment convertir un CSV en JSON

  1. 1

    Ajoutez votre CSV

    Déposez ou parcourez pour un fichier .csv, .tsv, .txt ou .psv. Le délimiteur, le caractère de guillemet et l'encodage sont détectés depuis le fichier et affichés pour que vous puissiez les modifier.

  2. 2

    Choisissez la forme de sortie

    Tableau d'objets pour une API, JSON Lines pour un import en base, table indexée pour des recherches, tableaux par colonne pour un dataframe, ou tableau de tableaux pour des données matricielles.

  3. 3

    Décidez de la lecture des valeurs

    Activez l'inférence de types pour obtenir de vrais nombres, booléens et null plutôt que des chaînes, et choisissez si une cellule vide devient null, une chaîne vide, ou est omise.

  4. 4

    Convertissez et exportez

    Appuyez sur Convertir, puis copiez tout le document dans le presse-papiers ou téléchargez-le. Rien ne quitte votre appareil.

Ce que ce flux CSV → JSON vous apporte

Conçu pour passer du tableur à l'API : maîtrisez le découpage des lignes, le décodage des octets, ce que devient chaque valeur et la transformation des en-têtes en clés — puis copiez le JSON ou téléchargez le fichier sans quitter votre machine.

  • Cinq formes de sortie, pas une — Tableau d'objets pour une API, JSON Lines pour un import en base, table indexée pour des recherches, tableaux par colonne pour un dataframe, ou tableau de tableaux pour des données matricielles.
  • De vraies valeurs, pas des chaînes — Nombres, booléens et null sortent comme valeurs JSON plutôt que comme texte entre guillemets — avec protection des cas où cela ferait perdre de l'information.
  • Délimiteur et guillemet réglables — Détection depuis le fichier ou forçage en virgule, point-virgule, tabulation ou barre, avec le guillemet en double, simple ou aucun pour les exports qui sortent des règles habituelles.
  • Un encodage qui corrige le texte illisible — Les marques d'ordre des octets priment sur votre choix, les exports UTF-16 se lisent correctement, et ISO-8859-1 est un vrai décodeur Latin-1, pas un alias.
  • Objets, matrices ou enregistrements imbriqués — Activez première ligne comme clés pour des lignes { "colonne": "valeur" }, gardez un tableau 2D si vous normalisez déjà dans le code, ou repliez les en-têtes pointés en objets imbriqués.
  • Copier, télécharger, recommencer — Le JSON indenté est prêt pour Postman, jq ou un commit dans un dépôt — régénérez-le instantanément après chaque réglage.
  • Exécution respectueuse de la vie privée — L'aperçu apparaît dès la lecture du fichier — pas de file d'attente, pas d'envoi, pas d'attente.

Choisir une forme de sortie

La forme détermine ce qu'est le niveau supérieur du document, et la bonne dépend entièrement de ce qui va le lire. Chacune est un fichier différent, pas une mise en forme différente du même fichier.

  • Tableau d'objets — [{ "id": 1, "name": "Ada" }] — la valeur par défaut, et ce qu'attendent une API HTTP, une application JavaScript ou une structure typée.
  • Tableau de tableaux — [["id","name"],[1,"Ada"]] — chaque cellule par position, sans consommer de ligne d'en-tête. Adapté aux données matricielles, ou à un fichier dont les en-têtes sont dupliqués ou absents.
  • JSON Lines (NDJSON) — Un enregistrement complet par ligne, sans crochets englobants ni virgules entre les enregistrements. C'est ce qu'acceptent mongoimport, BigQuery et la plupart des pipelines de logs, et cela n'est jamais indenté : un enregistrement réparti sur plusieurs lignes casse le format.
  • Table indexée — { "SKU-1": { … } } — un index, avec pour clé la colonne que vous choisissez. Adapté quand le consommateur cherche des enregistrements par identifiant plutôt que de les parcourir. Deux lignes partageant une clé ne peuvent pas survivre toutes les deux, l'outil indique donc combien ont été écartées.
  • Tableaux par colonne — { "id": [1,2], "name": ["Ada","Grace"] } — orienté colonnes, ce que veulent pandas, Arrow et la plupart des bibliothèques de graphiques, et bien plus compact que des objets par ligne quand il y a beaucoup de colonnes.

Comment les valeurs deviennent des types JSON

Avec l'inférence de types activée, chaque cellule est lue comme la valeur JSON qu'elle est réellement plutôt que mise entre guillemets. L'intéressant n'est pas ce qui est converti, mais ce qui ne l'est délibérément pas : chacun de ces cas est une valeur qu'un convertisseur naïf abîme en silence.

Ce qui est converti

  • Nombres — Entiers, décimaux et exposants, séparateurs de milliers retirés, les conventions 1,234.56 et 1.234,56 étant toutes deux comprises. Les parenthèses comptables sont lues comme des négatifs : (1 234,50) devient -1234,5.
  • Booléens — true, false, TRUE, FALSE, True et False deviennent de vrais booléens JSON. TRUE et FALSE sont ce qu'écrit un tableur ; les formes en minuscules sont ce qu'écrit tout le reste.
  • Null — Une cellule vide devient null par défaut, et le texte littéral null ou NULL — ce qu'écrit un export de base de données — devient également null.
  • JSON imbriqué, à la demande — Une cellule qui est elle-même un tableau ou un objet JSON peut être analysée plutôt que mise entre guillemets, ce qui rend exploitable un export Airtable ou Notion. Désactivé par défaut, car un champ adresse contenant une accolade n'est pas une structure de données.

Ce qui reste délibérément du texte

  • Zéros initiaux — 007 et 00123 restent des chaînes. Les convertir en 7 et 123 est irréversible, et une référence produit ou un code postal n'est pas une quantité.
  • Identifiants longs — Un numéro de carte, un IMEI ou un identifiant de plus de quinze chiffres significatifs reste une chaîne. En nombre JSON, 12345678901234567890 devient 12345678901234567000 — sans bruit et sans erreur.
  • Signe plus initial — +33612345678 est un numéro de téléphone, pas un entier positif, et retirer le plus change son sens.
  • Infinity et NaN — Ni l'un ni l'autre n'est du JSON valide. Un convertisseur qui les laisse passer ne produit pas un fichier cassé : il produit un fichier valide où ces cellules sont silencieusement devenues null.
  • Dates — JSON n'a pas de type date, donc 2024-01-15 reste exactement la chaîne contenue dans le fichier. Tout le reste serait une supposition sur un format que le fichier n'a jamais déclaré.
  • Devises et pourcentages — 50 € et 12 % gardent leurs symboles. Les retirer change le sens de la valeur, et JSON n'offre aucun endroit où noter qu'un nombre était un pourcentage.

Lignes d'en-tête, clés et collisions

La ligne d'en-tête est l'endroit où un convertisseur perd le plus discrètement des données, car chaque échec y produit encore un document bien formé — simplement avec une colonne en moins. Ces cas sont traités plutôt qu'ignorés, et chacun est signalé à côté du fichier.

  • En-têtes en double — Un fichier avec deux colonnes id écrirait la seconde par-dessus la première. La suivante est renommée id_2, et l'outil indique combien ont été renommées.
  • En-têtes vides — Une cellule d'en-tête vide devient column_4, numérotée selon sa position dans le fichier afin qu'on sache de quelle colonne il s'agit.
  • Lignes d'en-tête trop courtes — Si le corps est plus large que l'en-tête, les colonnes supplémentaires sont nommées plutôt que supprimées : perdre des valeurs parce que l'en-tête était court ne se voit pas dans la sortie.
  • Casse des clés — Laissez les noms exactement tels que le fichier les a écrits, ou convertissez-les en minuscules, majuscules, camelCase ou snake_case. Le renommage est explicite : un convertisseur ne doit pas renommer par défaut.
  • Noms d'apparence réservée — Une colonne nommée __proto__ ou constructor garde son nom exact. Le document est écrit directement sous forme de texte plutôt qu'assemblé en objets JavaScript, si bien que des noms non assignables en code sont restitués correctement.

JSON imbriqué depuis des en-têtes pointés

Les exports de CRM et de générateurs de formulaires écrivent souvent des données imbriquées sous forme de colonnes plates nommées adresse.ville et adresse.cp. Activer l'imbrication les replie en un véritable objet, de sorte que le JSON retrouve la forme qu'avaient les données avant d'être aplaties.

  • Point ou barre — L'un ou l'autre séparateur convient, et l'option est désactivée par défaut : une colonne légitimement nommée Revenus.2024 ne doit pas devenir un objet sans votre accord.
  • Toute profondeur — a.b.c.d imbrique quatre niveaux. Les segments vides sont réduits, donc a..b équivaut à a.b.
  • Aucune colonne n'est jamais perdue — Si un fichier contient à la fois adresse et adresse.ville, un même nom ne peut pas être une valeur et un objet à la fois. Plutôt que d'en supprimer une, les colonnes pointées gardent leur nom plat d'origine et l'outil nomme celles qu'il n'a pas pu imbriquer.
  • Rien n'est renommé — L'alternative à laisser une colonne plate serait de lui inventer un nom, et le JSON ne correspondrait plus au fichier. Chaque clé de la sortie est soit un en-tête présent dans le fichier, soit un column_N explicite pour un en-tête absent.

Les options d'analyse expliquées

Chaque réglage modifie la façon dont les caractères deviennent des champs et dont les champs deviennent des propriétés JSON. Ils sont appliqués au fichier à mesure que vous les changez, donc l'aperçu montre toujours les réglages courants.

  • Délimiteur — Le mode auto note la virgule, le point-virgule, la tabulation et la barre selon le caractère rectangulaire de la lecture obtenue, et non selon la fréquence du caractère : les virgules dans des champs entre guillemets ne faussent donc pas le résultat. Le mode manuel s'impose sur les fichiers récalcitrants.
  • Caractère de guillemet — Le guillemet double est la norme, mais il existe des fichiers cités avec des apostrophes, et des fichiers sans citation où une apostrophe dans un nom serait autrement lue comme telle. Un guillemet n'ouvre un champ qu'au début de ce champ, ce qui garde O'Brien intact.
  • Ignorer les premières lignes — Les rapports comportent souvent un titre et une ligne vide au-dessus du véritable en-tête. Les ignorer désigne la bonne ligne comme en-tête, et les lignes sont comptées comme des lignes : un titre contenant un saut de ligne reste une seule ligne.
  • Première ligne comme clés — Associe les en-têtes aux clés JSON ; désactivez-la quand le fichier n'a pas d'en-tête et que chaque ligne est une donnée — les colonnes seront alors nommées column_1 et suivantes.
  • Supprimer les espaces — Activé par défaut, de sorte qu'un export à largeur fixe lit ' 42 ' comme le nombre 42. Désactivez-le quand l'espacement d'une cellule est voulu.
  • Cellules vides — Une cellule vide devient null, une chaîne vide, ou la clé est simplement absente de l'enregistrement. Dans les formes positionnelles — tableaux et tableaux par colonne — omettre une valeur décalerait toutes les colonnes suivantes, la cellule vide y reste donc null.

Quand utiliser chaque encodage de fichier

Si les lettres ou les symboles monétaires s'affichent mal dans l'aperçu, choisissez un autre décodeur. Le mode auto gère presque tout ; les options manuelles sont pour les fichiers qu'il ne peut pas deviner.

  • Auto — Lit une marque d'ordre des octets si le fichier en a une, vérifie ensuite si les octets forment de l'UTF-8 valide, puis se rabat sur Windows-1252 — ce qu'écrit un tableur en configuration occidentale quand on ne lui demande rien d'autre.
  • UTF-8 — Par défaut pour les entrepôts de données, les exports SaaS et tout ce qui est enregistré en Unicode. Une marque UTF-8 est retirée au lieu de faire partie de la première clé.
  • UTF-16LE et UTF-16BE — Ce que produit l'export « Texte Unicode ». Lu par erreur comme de l'UTF-8, un tel fichier devient une unique colonne énorme de caractères nuls.
  • Windows-1252 — Typique des CSV d'Excel sous Windows en Europe de l'Ouest, où 0x92 est une apostrophe typographique.
  • ISO-8859-1 — Un vrai décodeur Latin-1, où chaque octet correspond au point de code de même valeur. La plupart des outils proposent cette option puis vous donnent Windows-1252, car la norme d'encodage du web traite ce nom comme un alias ; ici c'est le vrai décodeur, pour les fichiers où 0x80–0x9F sont des codes de contrôle et non de la ponctuation.

Conversion par lot et fusion de fichiers

Un fichier à la fois est gratuit, jusqu'à 25 Mo. Pro ajoute l'échelle et les options de livraison — la conversion elle-même, et toute option touchant à l'exactitude, sont identiques dans les deux offres.

  • Jusqu'à 50 fichiers — Mettez un dossier d'exports en file et convertissez-les en une passe, chacun avec son propre délimiteur, encodage et ligne d'en-tête détectés.
  • Un seul téléchargement ZIP — Un lot se télécharge en une archive unique plutôt qu'en cinquante boîtes de dialogue. Les noms de fichiers sont rendus sûrs pour l'extraction : un nom issu d'un export non fiable ne peut pas écrire hors du dossier de décompression.
  • Fusionner en un document — Réunit tous les fichiers en file en un seul tableau d'objets, ou un seul fichier JSON Lines. Chaque fichier est lu avec sa propre ligne d'en-tête : la troisième colonne du fichier deux n'est jamais écrite sous le troisième en-tête du fichier un.
  • Tout le reste est gratuit — Les cinq formes de sortie, l'inférence de types, l'imbrication, les transformations de clés, les forçages par colonne, tous les encodages et toutes les indentations sont disponibles gratuitement.

Pourquoi convertir un CSV en JSON ?

JSON est la langue commune des API REST, des fonctions serverless et des chargeurs NoSQL. Passer du CSV au JSON permet de valider des formes, de comparer des sorties et d'injecter des lignes dans des applications sans réécrire un analyseur dans chaque langage.

  • Prêt pour l'API et l'automatisation — Alimentez la même structure dans des corps fetch, des outils en ligne de commande ou des bases documentaires.
  • Structuré pour le code — Tableaux et objets se transposent proprement en types TypeScript, Python ou Go après conversion.
  • Typé, donc il survit au trajet — Un nombre JSON est un nombre pour tous les consommateurs. Une cellule CSV est du texte pour tous, et chacun devine ensuite différemment.
  • Comparable — Un JSON indenté avec une valeur par ligne produit un diff lisible, ce qu'une ligne CSV sur une seule ligne ne fait pas.

Comment fonctionne la conversion

Le fichier est lu comme des octets, décodé avec l'encodage que le fichier déclare ou que vous choisissez, parcouru en lignes, puis écrit directement en texte JSON. Il n'y a ni tableur intermédiaire ni aller-retour vers un serveur.

  • Décoder — La marque d'ordre des octets est lue en premier et l'emporte sur la liste déroulante, car la marque est le fichier qui déclare son encodage. Sans elle, l'UTF-8 valide est détecté et Windows-1252 sert de repli.
  • Détecter et découper — Le délimiteur et le caractère de guillemet sont notés ensemble sur un échantillon, et le gagnant comme le second sont affichés, de sorte qu'une décision serrée soit visible plutôt que silencieuse. Les champs entre guillemets peuvent contenir des délimiteurs et des sauts de ligne.
  • Typer — Chaque cellule est classée par une grammaire plutôt que confiée à un analyseur permissif du langage, ce qui garde 007, 10-20 et +1 intacts au lieu d'en faire 7, une date et 1.
  • Écrire — Le document est écrit par blocs et assemblé comme un fichier plutôt que comme une unique chaîne géante, ce qui explique qu'un résultat de 27 Mo ne fige pas la page. La sortie est identique octet pour octet à ce que produirait le sérialiseur du langage lui-même.

La conversion s'exécute sur votre appareil, hors du fil principal, et écrit le document par blocs au lieu de le construire d'un seul tenant : un export de 10 Mo se convertit en environ une demi-seconde et la page ne cesse jamais de répondre.

Questions fréquentes

Comment convertir un CSV en JSON ?

Déposez un fichier .csv, .tsv, .txt ou .psv, choisissez une forme de sortie et décidez si la première ligne devient les clés d'objet. L'aperçu se met à jour à chaque changement de réglage, vous voyez donc le JSON exact avant de valider. Appuyez sur Convertir et l'outil produit le document complet, que vous pouvez copier dans le presse-papiers ou télécharger en .json — le tout sans que le fichier quitte votre appareil.

Que change « première ligne comme clés » dans la sortie ?

Quand l'option est active, la ligne d'en-tête fournit les noms de propriétés et chaque ligne suivante devient un objet JSON, donnant un tableau d'enregistrements { "colonne": "valeur" } prêt pour une API. Désactivée, la première ligne est traitée comme des données et les colonnes sont nommées column_1, column_2, etc., de sorte que rien n'est perdu. Choisir la forme tableau de tableaux conserve chaque cellule par position — utile pour des données matricielles.

Pourquoi mes colonnes sont-elles mal découpées ?

Le délimiteur choisi ne correspond probablement pas au fichier. La détection automatique note la virgule, le point-virgule, la tabulation et la barre verticale selon le caractère rectangulaire de la lecture obtenue, et non selon la fréquence du caractère : une virgule dans une adresse entre guillemets ne fausse donc pas le résultat. Vous pouvez toujours forcer le délimiteur, ainsi que le caractère de guillemet (double, simple ou aucun), jusqu'à ce que les colonnes s'alignent.

Quels encodages de fichier sont pris en charge ?

La détection automatique lit d'abord toute marque d'ordre des octets, puis se rabat sur UTF-8, puis sur Windows-1252. Vous pouvez aussi forcer UTF-8, UTF-16LE, UTF-16BE, Windows-1252 ou ISO-8859-1. Une marque d'ordre des octets l'emporte toujours sur la liste déroulante, car la marque est le fichier qui déclare son encodage alors que la liste est une supposition — et l'outil vous le signale au lieu de le faire silencieusement.

Les nombres deviennent-ils de vrais nombres JSON ?

Oui, et l'outil refuse de le faire lorsque cela détruirait de l'information. Une référence comme 007 garde ses zéros initiaux, un numéro de carte à vingt chiffres reste une chaîne plutôt que de perdre ses derniers chiffres par arrondi en virgule flottante, un téléphone écrit +33612345678 garde son plus, et Infinity et NaN restent des chaînes car ni l'un ni l'autre n'est du JSON valide. TRUE et FALSE deviennent des booléens et NULL devient null. Les dates restent des chaînes, car JSON n'a pas de type date et toute conversion serait une supposition.

Peut-il créer du JSON imbriqué à partir de mes en-têtes ?

Oui. Des en-têtes écrits adresse.ville et adresse.cp peuvent être repliés en un objet adresse imbriqué, ce qui correspond aux exports de la plupart des CRM. Les en-têtes séparés par des barres fonctionnent de la même manière. Si un fichier contient à la fois une colonne adresse et une colonne adresse.ville, les deux ne peuvent pas occuper la même place dans un document : les colonnes pointées conservent alors leur nom plat d'origine et l'outil vous indique lesquelles — aucune colonne n'est jamais supprimée ni renommée pour faire fonctionner l'imbrication.

Mon CSV est-il envoyé quelque part ?

Non. Le fichier est lu, analysé et écrit entièrement sur votre appareil, et le document final est remis directement à un téléchargement ou au presse-papiers. Cela garde vos exports confidentiels privés, permet à l'outil de fonctionner hors ligne une fois chargé, et le rend utilisable sur téléphone et tablette autant que sur ordinateur.

Est-ce gratuit, et cela gère-t-il les gros fichiers ?

Oui, c'est gratuit. L'offre gratuite convertit un fichier à la fois jusqu'à 25 Mo, soit environ 250 000 lignes d'un export courant, avec toutes les formes de sortie et toutes les options. La conversion s'exécute hors du fil principal : la page reste réactive et l'aperçu continue de se mettre à jour pendant l'écriture d'un gros fichier. Pro ajoute la conversion par lot jusqu'à 50 fichiers, un téléchargement ZIP unique et la fusion d'un lot en un seul document.

4.8sur 5

sur 186 notes

Notez cet outil

Touchez une étoile — c’est rapide