JSON Array ↔ Table

Convertir entre tableaux JSON et tables

Format:
Entrée JSON
1
Sortie
Comprendre Conversion JSON vers tableau
TL;DR

La conversion JSON vers tableau aplatit du JSON imbrique en format tabulaire -- indispensable pour importer des donnees d'API dans des tableurs, des bases de donnees ou du CSV.

Qu’est-ce que l’aplatissement JSON ?

L’aplatissement JSON (ou conversion JSON vers tableau) transforme des donnees JSON hierarchiques en un format tabulaire plat — lignes et colonnes — adapte aux tableurs, bases de donnees relationnelles et fichiers CSV.

Le JSON est le format d’echange de donnees dominant pour les API web. Mais la force du JSON — la capacite a representer des donnees hierarchiques profondement imbriquees — devient un probleme lorsque vous devez analyser ces donnees dans des outils concus pour des tables plates. Excel ne peut pas afficher nativement un objet JSON imbrique. Les bases de donnees SQL stockent les donnees en lignes et colonnes. Les fichiers CSV sont intrinsequement plats.

La conversion JSON vers tableau comble ce fosse. Elle prend des structures JSON imbriquees et produit une representation plate ou chaque objet JSON devient une ligne et chaque cle (y compris les cles imbriquees exprimees en notation pointee) devient une colonne.

Comment fonctionne le traitement des objets imbriques

Le principal defi de l’aplatissement JSON est de decider comment representer les structures imbriquees dans un format plat. L’approche standard utilise la notation pointee pour creer des noms de colonnes qui encodent le chemin original :

{
  "user": {
    "name": "Alice",
    "address": {
      "city": "Paris",
      "zip": "75001"
    }
  }
}

S’aplatit en :

user.nameuser.address.cityuser.address.zip
AliceParis75001

Chaque niveau d’imbrication ajoute un segment supplementaire separe par un point au nom de la colonne. Cela preserve la hierarchie de maniere lisible et evite les collisions — si user.name et company.name existent tous deux, ils deviennent des colonnes separees.

Limites de profondeur

Pour du JSON profondement imbrique (5 niveaux et plus), les noms de colonnes en notation pointee peuvent devenir encombrants (data.results[0].metadata.tags[2].label). Certains outils proposent un parametre de profondeur maximale — l’imbrication au-dela de cette profondeur est serialisee sous forme de chaine JSON dans une seule cellule.

Traitement des tableaux

Les tableaux introduisent la plus grande complexite dans l’aplatissement JSON. Il existe plusieurs strategies :

Tableau d’objets (uniforme) : lorsque chaque element possede les memes cles, chaque element devient une ligne. C’est le cas le plus courant et le plus propre — une API JSON retournant une liste d’utilisateurs se convertit directement en table.

[
  {"name": "Alice", "age": 30},
  {"name": "Bob", "age": 25}
]
nameage
Alice30
Bob25

Tableau de primitives : les tableaux simples comme ["red", "green", "blue"] peuvent etre concatenes dans une seule cellule (red, green, blue) ou etendus en colonnes numerotees (colors.0, colors.1, colors.2).

Tableaux imbriques : lorsqu’un objet contient un tableau, l’outil d’aplatissement doit decider : etendre chaque element du tableau dans une ligne separee (jointure un-a-plusieurs), ou serialiser le tableau sous forme de chaine dans une seule cellule. La plupart des outils proposent les deux options.

Tableaux irreguliers : lorsque les elements d’un tableau ont des cles differentes, l’outil d’aplatissement cree des colonnes pour toutes les cles de tous les elements, en remplissant avec des valeurs vides la ou une cle est absente dans un element donne.

Cas d’utilisation courants

  • Analyse de donnees d’API : export de reponses d’API (listes d’utilisateurs, enregistrements de transactions, catalogues de produits) dans des tableurs pour l’analyse, le filtrage et la creation de graphiques
  • Import en base de donnees : conversion de donnees JSON d’API en CSV/TSV plat pour l’import en masse dans des bases de donnees relationnelles (PostgreSQL COPY, MySQL LOAD DATA)
  • Generation de rapports : transformation de donnees JSON de logs ou d’evenements analytiques en rapports tabulaires pour les parties prenantes travaillant sous Excel
  • Integration dans les pipelines de donnees : conversion de charges utiles JSON entre microservices utilisant le JSON et systemes existants consommant du CSV ou des fichiers a largeur fixe
  • Exploration rapide : visualisation de donnees JSON complexes sous forme de tableau pour comprendre rapidement leur structure, identifier des schemas et reperer des anomalies

Essayez ces exemples

Tableau JSON vers table Valide

Un tableau JSON d'objets avec des cles uniformes se convertit proprement en une table de 3 lignes et 3 colonnes. Chaque objet devient une ligne, chaque cle devient un en-tete de colonne : name | age | city.

[{"name":"Alice","age":30,"city":"Paris"},{"name":"Bob","age":25,"city":"London"},{"name":"Charlie","age":35,"city":"Berlin"}]
JSON profondement imbrique (notation pointee) Valide

Les objets imbriques sont aplatis en utilisant la notation pointee : user.name, user.address.city, user.address.zip, active. La hierarchie est preservee dans les noms de colonnes tout en produisant une structure tabulaire plate.

[{"user":{"name":"Alice","address":{"city":"Paris","zip":"75001"}},"active":true}]