JSON en tableau
Affiche un tableau d’objets sous forme de table triable et lisible.
Rien de ce que vous collez ne quitte votre navigateur. La liste d’autorisation connect-src en fait une garantie du navigateur plutôt qu’une promesse. Vérifiez-le vous-même
Un tableau d’objets rendu sous forme de table réellement lisible, avec chaque colonne découverte sur toutes les lignes plutôt qu’échantillonnée sur la première.
Ce dernier point fait toute la différence. Un convertisseur qui lit les clés de l’élément zéro supprime en silence tous les champs qui n’apparaissent que plus loin, et vous ne le découvrez qu’en aval, quand une colonne manque.
Comment les lignes et les colonnes sont déterminées
- Un tableau d’objets
- Une ligne par élément. Le cas évident et le plus fréquent.
- Un objet enveloppe
- Un payload de la forme {"ok": true, "data": [...]} utilise le tableau comme source des lignes, et le signale, parce qu’il s’agit d’une supposition et non d’une règle.
- Un objet unique
- Une ligne.
- Un tableau de scalaires
- Une seule colonne nommée value.
- Colonnes
- L’union de tous les chemins sur toutes les lignes, dans l’ordre où chacun est apparu pour la première fois.
Valeurs imbriquées dans une cellule
Les objets imbriqués deviennent des colonnes pointées : address.city plutôt qu’une cellule contenant du JSON. Les tableaux imbriqués sont rendus ici en JSON dans la cellule, parce qu’une table comportant tags.0 jusqu’à tags.47 en colonnes séparées n’est plus une table lisible.
Si vous voulez la forme à colonnes indexées, ou une ligne par élément de tableau, utilisez la page JSON en CSV, où ces règles sont configurables.
How to do this in code
Produire une table à partir de JSON en code.
py Python
import pandas as pd
df = pd.json_normalize(records)
print(df.to_markdown(index=False))
df.to_csv('out.csv', index=False) sh jq
C’est la partie map(keys) | add | unique qui fait prendre l’union plutôt que le premier objet.
# Header row from the union of all keys, then the rows
jq -r '(map(keys) | add | unique) as $cols
| $cols, (.[] | [.[$cols[]]])
| @csv' records.json js JavaScript
const columns = [...new Set(records.flatMap(Object.keys))];
const rows = records.map((r) => columns.map((c) => r[c] ?? ''));
console.table(records); // in a browser console or Node Questions fréquentes
- Pourquoi une colonne est-elle vide sur certaines lignes ?
- Parce que cette clé est absente de ces objets. La colonne existe parce qu’au moins une ligne la possède. Une cellule vide signifie que la clé manquait ; une cellule contenant null signifie que la clé était présente avec une valeur null.
- Puis-je trier sur une colonne ?
- Pas dans cet aperçu. Téléchargez le CSV et triez-le dans un tableur, ou interrogez le document avec JSONPath si vous avez besoin d’un sous-ensemble filtré.