Convertir JSON en CSV : aplatir un tableau d’objets

Un tableau JSON d’objets se mappe à une table CSV — une ligne par objet, colonnes issues de l’union des clés. Le vrai travail consiste à gérer le quoting et les valeurs imbriquées.

La forme « tableau d’objets »

CSV est un tableau plat, donc le JSON qui se convertit proprement est un tableau d’objets : chaque objet devient une ligne et chaque clé une colonne.

Construire l’en-tête

Utilisez l’union des clés de tous les objets comme en-tête, pas seulement celles du premier, pour que les enregistrements avec des clés en plus ou en moins restent alignés. Les cellules manquantes restent vides.

Règles de mise entre guillemets

Toute valeur contenant une virgule, un guillemet double ou un saut de ligne doit être entourée de guillemets doubles, et les guillemets internes doublés, sinon les colonnes se désalignent.

Valeurs imbriquées

Objets et tableaux n’ont pas de forme plate en CSV : écrivez-les comme texte JSON dans la cellule (réversible) ou aplatissez-les en colonnes pointées comme address.city.

Ordre d’en-tête et stabilité

Triez l’union des clés ou figez l’ordre à celui du premier enregistrement avec les extras ajoutés à la fin. Un ordre d’en-tête stable rend les diffs entre exports utiles et évite de réorganiser les colonnes à chaque exécution.

Format des dates et nombres

Les tableurs réinterprètent les valeurs avec zèle : les ID numériques longs perdent en précision, les dates ISO sont reformatées, les zéros de tête disparaissent. Si une valeur doit faire un aller-retour à l’identique, entourez-la de guillemets et préfixez-la d’une apostrophe lors d’un collage dans Excel.

Compatibilité Excel et Google Sheets

Utilisez des fins de ligne CRLF et un BOM (UTF-8 avec byte-order mark) pour qu’Excel détecte l’Unicode. Pour Google Sheets, le BOM est optionnel, mais les virgules comme séparateurs et l’échappement par guillemets doubles s’appliquent toujours.

Du CSV vers le JSON

Découpez les lignes avec un split conscient des guillemets (ne faites pas un split naïf sur les virgules), utilisez la première ligne comme noms de colonnes et essayez par colonne de coercer en nombres, booléens et dates ISO. Le va-et-vient avec cet outil garde les chaînes telles quelles sauf si toute la colonne est numérique.

Pièges courants

Voici les problèmes qui cassent la plupart des exports CSV.

  • Virgules non échappées à l’intérieur des valeurs de chaîne
  • Sauts de ligne dans des cellules sans guillemets autour
  • Encodages mélangés (UTF-8 vs Latin-1) produisant du mojibake
  • Grands entiers (IDs) silencieusement tronqués par les tableurs
  • Booléens stockés comme chaînes "true"/"false" au lieu de TRUE/FALSE