mygems

Convertir un CSV en JSON

Chaque ligne un objet, chaque en-tête une clé.

  • Tableau, JSON Lines ou tableaux
  • Nombres et booléens détectés
  • Les identifiants restent des chaînes
  • Rien n’est envoyé

1.Ouvrez le fichier

CSV ou TSV. Glissez-le ici, ou choisissez un fichier.

Pourquoi ça existe

Convertir du CSV en JSON paraît facile, et les convertisseurs habituels le rendent facile en se trompant sur les types : tout devient une chaîne, ou tout ce qui a l’air numérique devient un nombre, y compris le code postal avec son zéro en tête et l’identifiant à 18 chiffres que JavaScript ne sait pas représenter exactement. Ici, chaque colonne est décidée d’après toutes ses valeurs, et celles qui ressemblent seulement à des nombres sont laissées telles quelles.

Ce que ça fait

  • Écrit un tableau d’objets indexés par la ligne d’en-tête, du JSON Lines avec un objet par ligne, ou un tableau de tableaux avec l’en-tête en premier.
  • Détecte les colonnes entièrement composées de nombres ou de vrai/faux et les écrit sans guillemets.
  • Garde en chaînes les colonnes avec des zéros en tête ou de plus de 15 chiffres, car un nombre JSON les modifierait.
  • Transforme les cellules vides en null plutôt qu’en chaîne vide, ou garde tout en chaînes si vous préférez.
  • Indente pour la lecture, ou écrit le fichier le plus léger possible.

Quelle structure choisir

Un tableau d’objets est ce qu’attendent la plupart des API et du code JavaScript. Le JSON Lines convient aux gros fichiers et aux outils qui traitent un enregistrement à la fois, comme BigQuery, Elasticsearch et jq. Un tableau de tableaux est le plus compact et garde l’ordre des colonnes explicite.

Questions

Pourquoi ma colonne d’identifiants reste-t-elle une chaîne ?
Parce que la transformer en nombre la modifierait. Un zéro en tête est supprimé par n’importe quel analyseur JSON, et les entiers de plus de 15 ou 16 chiffres perdent en précision en JavaScript. Si toutes les valeurs d’une colonne sont de simples nombres sans l’un ni l’autre problème, elle est écrite en nombres.
Que deviennent les cellules vides ?
Elles deviennent null quand la détection des types est activée, car un CSV ne permet pas de distinguer une chaîne vide d’une valeur absente. Sans détection, toutes les valeurs, vides comprises, sont des chaînes.
Peut-il produire du JSON imbriqué ?
Le CSV est plat, donc le JSON produit l’est aussi : un seul niveau de clés par enregistrement. Pour l’inverse, du JSON imbriqué vers le CSV, c’est l’outil JSON vers CSV.