JSON als Tabelle
Stellt ein Array von Objekten als sortierbare, lesbare Tabelle dar.
Nichts, was Sie einfügen, verlässt Ihren Browser. Die connect-src Erlaubnisliste macht daraus eine Garantie des Browsers statt eines Versprechens. Selbst überprüfen
Ein Array von Objekten, dargestellt als Tabelle, die man tatsächlich lesen kann - mit jeder Spalte über alle Zeilen erkannt statt aus der ersten abgeleitet.
Genau dieser letzte Punkt macht den Unterschied. Ein Konverter, der die Schlüssel von Element null liest, verschluckt stillschweigend jedes Feld, das erst später auftaucht, und Sie merken es weiter hinten in der Kette, wenn eine Spalte fehlt.
Wie Zeilen und Spalten bestimmt werden
- Ein Array von Objekten
- Eine Zeile pro Element. Der offensichtliche und der häufige Fall.
- Ein Hüllobjekt
- Ein Payload in der Form {"ok": true, "data": [...]} nimmt das Array als Zeilenquelle und sagt das auch, denn das ist eine Vermutung und keine Regel.
- Ein einzelnes Objekt
- Eine Zeile.
- Ein Array von Skalaren
- Eine einzelne Spalte namens value.
- Spalten
- Die Vereinigung aller Pfade über alle Zeilen, in der Reihenfolge ihres ersten Auftretens.
Verschachtelte Werte in einer Zelle
Verschachtelte Objekte werden zu Punktspalten: address.city statt einer Zelle, die JSON enthält. Verschachtelte Arrays werden hier als JSON innerhalb der Zelle dargestellt, denn eine Tabelle mit tags.0 bis tags.47 als eigene Spalten ist keine Tabelle, die noch jemand lesen kann.
Wenn Sie die Indexspalten-Form wollen oder eine Zeile pro Array-Element, nehmen Sie die Seite JSON in CSV, wo diese Regeln einstellbar sind.
How to do this in code
Eine Tabelle aus JSON im Code erzeugen.
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
Der Teil map(keys) | add | unique ist es, der hier die Vereinigung nimmt statt des ersten Objekts.
# 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 Häufige Fragen
- Warum ist eine Spalte in manchen Zeilen leer?
- Weil dieser Schlüssel in jenen Objekten fehlt. Die Spalte existiert, weil mindestens eine Zeile ihn hat. Eine leere Zelle heißt, der Schlüssel fehlte; eine Zelle mit null heißt, der Schlüssel war vorhanden und hatte den Wert null.
- Kann ich nach einer Spalte sortieren?
- In dieser Vorschau nicht. Laden Sie die CSV herunter und sortieren Sie sie in einer Tabellenkalkulation, oder fragen Sie das Dokument mit JSONPath ab, wenn Sie eine gefilterte Teilmenge brauchen.