CSV ⇄ JSON

Collez l’un des deux formats — l’autre apparaît au fil de la frappe, dans les deux sens.

Comment l’utiliser

  1. Collez du CSV (ou du TSV, ou du texte séparé par des points-virgules) ou un tableau JSON dans le champ — le résultat se dessine au fil de la frappe, sans bouton à presser. Le sens est déduit du premier caractère et affiché au-dessus du résultat, pour que vous puissiez le vérifier.
  2. Si le sens a été mal deviné, choisissez CSV → JSON ou JSON → CSV. Si tout atterrit dans une seule colonne, passez le séparateur de « Auto » à votre caractère. Désactivez « La première ligne est un en-tête » quand le fichier commence par des données — vous obtenez alors un tableau de tableaux au lieu d’objets.
  3. Copiez ou téléchargez le résultat. Les deux utilisent exactement le texte affiché à l’écran ; le fichier s’appelle data.json ou data.csv. Charger l’exemple remplit un exemple pour le sens actif.

Exemple

Entrée (CSV)

commande_id,client,note,code_postal,montant,expedie
1001,"Lefèvre, Ana",demande un remboursement,01000,89.90,true
1002,Benoît Carter,,75001,42.00,false

Sortie (JSON)

[
  {
    "commande_id": 1001,
    "client": "Lefèvre, Ana",
    "note": "demande un remboursement",
    "code_postal": "01000",
    "montant": 89.9,
    "expedie": true
  },
  {
    "commande_id": 1002,
    "client": "Benoît Carter",
    "note": "",
    "code_postal": 75001,
    "montant": 42,
    "expedie": false
  }
]

Quatre points à vérifier dans cette sortie : la virgule dans « Lefèvre, Ana » est restée à l’intérieur de la valeur au lieu de couper la ligne ; le code postal 01000 a conservé son zéro initial, sinon il deviendrait 100 ; 75001 est bien devenu un nombre, la colonne code_postal finit donc avec des types mixtes — désactivez « Détecter les nombres et les booléens » pour garder chaque valeur en chaîne ; et 89.90 devient 89.9, car un nombre JSON ne peut pas porter de zéro final.

Règles, limites et problèmes connus

  • Pas d’envoi de fichier, de glisser-déposer ni de récupération par URL : collez le texte. Une zone de dépôt mangerait la hauteur nécessaire au résultat, et lire correctement des fichiers implique de gérer les encodages non UTF-8 — la visionneuse CSV le fait déjà (GB18030, Big5, Windows-1256), ouvrez donc le fichier là-bas et copiez le texte.
  • L’entrée est plafonnée à 1 000 000 de caractères ; au-delà de 200 000, le résultat attend que vous cessiez de taper et le signale. Au-delà du plafond absolu, une erreur explicite s’affiche — l’entrée n’est jamais tronquée en silence.
  • La détection de type se fait par cellule et reste prudente : seuls true / false / null (en minuscules uniquement) et les nombres JSON stricts sont convertis. Les entiers avec un zéro initial (01000) et les nombres de 16 chiffres ou plus (identifiants longs) restent toujours des chaînes, et les cellules vides restent "" au lieu de devenir null.
  • Un nombre JSON ne conserve pas les zéros finaux : 89.90 devient 89.9 et 42.00 devient 42. Désactivez « Détecter les nombres et les booléens » pour garder chaque valeur exactement telle qu’écrite.
  • Le nombre de colonnes correspond à la ligne la plus large, aucun champ n’est donc perdu : les lignes courtes sont complétées par des chaînes vides et les champs excédentaires reçoivent un nom généré automatiquement. Les lignes qui ne correspondent pas à la première sont listées par leur numéro.
  • Les noms de colonnes en double sont renommés en _2, _3… au lieu de s’écraser les uns les autres — un écrasement perdrait silencieusement une colonne entière. Les cellules d’en-tête manquantes ou vides deviennent colonne_N. Ces noms sont lisibles par machine et identiques dans toutes les langues de l’interface.
  • JSON → CSV accepte un tableau d’objets (le cas principal), un tableau de tableaux (colonnes positionnelles), un objet unique et un tableau de valeurs simples (une colonne « value »). Tout le reste — une valeur au niveau supérieur, ou un tableau mélangeant objets et autres valeurs — est refusé avec la ligne et la colonne, jamais deviné.
  • Les objets imbriqués sont aplatis en clés pointées (adresse.ville) par défaut ; les tableaux ne sont jamais aplatis, ils sont écrits en JSON compact dans la cellule. Désactivez l’aplatissement pour garder aussi les objets imbriqués en JSON. Une valeur null devient une cellule vide.
  • Le JSON est analysé strictement : pas de commentaires, pas de virgules finales, pas de guillemets simples, pas de caractères de contrôle non échappés, imbrication jusqu’à 64 niveaux. Un objet par ligne (JSON Lines) n’est pas accepté — englobez d’abord les objets dans un tableau.
  • Le CSV est le côté tolérant : un guillemet non fermé est replié jusqu’à la fin du texte et sa ligne est nommée, les lignes vides sont ignorées et comptées, et une ligne au nombre de champs incorrect est listée. Seul le côté JSON produit des erreurs bloquantes.
  • Le CSV de sortie utilise des fins de ligne CRLF et aucun BOM, et il est identique à ce que vous copiez. Si Excel affiche des caractères illisibles à l’ouverture d’un CSV non latin, importez-le via Données → À partir d’un fichier texte/CSV et choisissez UTF-8.
  • Hors périmètre : .xlsx, archives, fichiers multiples, JSON Lines, export YAML/XML/SQL/Excel, tri, filtrage, sélection de colonnes et dédoublonnage — la visionneuse CSV et le convertisseur de configuration couvrent ces besoins. Rien n’est envoyé, stocké ou placé dans l’URL.

Ce dont on a généralement besoin ensuite, une fois les données dans l’autre format.