Json To Csv LogoJson To Csv

How to Flatten the JSON Data: Explodieren, Verbinden oder Verschachtelt Lassen (Anleitung 2026)

JSON-Daten zu glätten bedeutet, verschachtelte Objekte und Listen in flache Zeilen und Spalten zu verwandeln. Objekte werden zu Spalten mit Punktnotation, kurze Listen verbinden Sie in einer Zelle, und Listen, die Sie auswerten müssen, werden zu einer Zeile pro Element. So entscheiden Sie richtig, mit jedem Rezept an echten Daten getestet.

Aktualisiert: 2026-10-169 Min. Lesezeit

Was es bedeutet, JSON-Daten zu glätten

CSV ist flach: Zeilen und Spalten, sonst nichts. JSON ist ein Baum: Objekte in Objekten, Listen in Objekten, Objekte in Listen. Wenn Sie flatten the JSON data wollen, verwandeln Sie diesen Baum in eine Tabelle, ohne die Informationen zu verlieren, die Sie wirklich brauchen. Jedes Glättungswerkzeug führt dieselben drei Schritte aus, und sobald Sie diese Schritte benennen können, wird jedes Werkzeug vorhersehbar.

Die drei Schritte sind: Verschachtelte Objekte werden zu Spalten mit Punktnotation (aus customer werden customer.name und customer.city). Listen aus einfachen Werten werden zu einer verbundenen Zelle (aus items wird book; pen). Und Listen, die Sie auswerten müssen, werden zu einer Zeile pro Element, was man Explodieren nennt. Welcher Schritt für welche Liste gilt, ist die eigentliche Fähigkeit, und es ist eine Entscheidung, keine Standardeinstellung.

Eine Unterscheidung ist vor allem anderen wichtig. Unsere frühere Anleitung zum Umwandeln von verschachteltem JSON in CSV dokumentiert genau, was der Glättungsschalter des Konverters auf dieser Seite tut, Zelle für Zelle, einschließlich seiner Randfälle. Diese Anleitung handelt von der Aufgabe selbst: Sie haben verschachtelte JSON-Daten, Sie wollen eine flache Tabelle, und Sie dürfen selbst entscheiden, wie jeder Teil geglättet wird, in jedem Werkzeug, auch in solchen, die gar keinen Schalter haben.

Das durchgearbeitete Beispiel: drei Bestellungen, verschachtelt

Jedes Beispiel in dieser Anleitung verwendet dieselbe kleine Testdatei: drei Bestellungen mit einem verschachtelten Kundenobjekt, einer Artikelliste und einer leeren Liste in der dritten Bestellung. Klein genug, um sie von Hand zu prüfen, und verschachtelt genug, um jede Entscheidung zu zeigen.

orders.json, das durchgearbeitete Beispiel
[
  { "orderId": "A-101", "customer": { "name": "Ana", "city": "Madrid" }, "items": ["book", "pen"], "total": 19.99 },
  { "orderId": "A-102", "customer": { "name": "Ken", "city": "Osaka" }, "items": ["lamp"], "total": 42.50 },
  { "orderId": "A-103", "customer": { "name": "Lina", "city": "Berlin" }, "items": [], "total": 7.25 }
]

Schritt 1: Verschachtelte Objekte werden zu Spalten mit Punktnotation

Ein verschachteltes Objekt hat benannte Felder, deshalb ist das Glätten mechanisch: Gehen Sie den Baum hinunter und verbinden Sie die Schlüsselnamen mit Punkten. customer.name enthält Ana, customer.city enthält Madrid, und die ursprüngliche Verschachtelung ist verschwunden, aber nichts ist verloren, weil der Name mit Punkten den vollständigen Pfad zurück zur Quelle festhält.

In diesem Schritt sind sich alle Werkzeuge einig. Der Online-Konverter macht es, pandas json_normalize macht es, jq macht es, wenn Sie die Pfade ausdrücklich benennen. Die Tiefe ist die einzige Ermessensfrage: Eine oder zwei Ebenen mit Punkten bleiben lesbar, vier Ebenen (a.b.c.d) bedeuten meist, dass Sie eine Struktur glätten, die nie als Tabellenzeile gedacht war, und genau darum geht es im Abschnitt zur Tiefe weiter unten.

Schritt 1 angewendet: Objekte mit Punkten, Listen verbunden
orderId,customer.name,customer.city,items,total
A-101,Ana,Madrid,book; pen,19.99
A-102,Ken,Osaka,lamp,42.50
A-103,Lina,Berlin,,7.25

Schritt 2: Kurze Listen werden zu einer verbundenen Zelle

Eine Liste aus einfachen Werten, also Zeichenketten oder Zahlen ohne eigene Verschachtelung, wird zu einer einzigen Zelle, indem Sie die Werte mit einem Trennzeichen verbinden. Der Konverter auf dieser Seite verbindet mit einem Semikolon, gefolgt von einem Leerzeichen (book; pen). Das Semikolon ist eine bewusste Wahl: Kommas würden mit dem CSV-Trennzeichen kollidieren, während ein Semikolon in einer Zelle eindeutig ist und einen Weg durch Excel hin und zurück überlebt.

Das Verbinden behält eine Zeile pro Datensatz, und genau das wollen Sie, wenn die Liste Kontext ist und nicht das Thema. Tags an einem Artikel, Fähigkeiten in einem Profil, Kategorien an einem Produkt: Sie werden sie lesen, vielleicht danach filtern, aber Sie werden die einzelnen Werte nicht summieren oder zählen. Verbinden Sie solche Listen.

Verbundene Listen: eine Zeile pro Bestellung, Listen in einer Zelle
orderId,items
A-101,book; pen
A-102,lamp
A-103,

Schritt 3: Eine Liste in eine Zeile pro Element aufspalten (Explodieren)

Das Explodieren ist der Schritt, den die meisten Menschen übersehen, weil die meisten Konverter ihn gar nicht anbieten. Statt eine Liste in eine Zelle zu quetschen, erzeugen Sie eine Zeile pro Element und wiederholen die Felder des übergeordneten Datensatzes in jeder Zeile. Bestellung A-101 mit zwei Artikeln wird zu zwei Zeilen: eine für book, eine für pen, jede mit Ana, Madrid und 19.99. Aus drei Bestellungen werden vier Zeilen, weil die leere Liste in A-103 trotzdem eine Zeile mit einem leeren Artikel ergibt, sodass die Bestellung selbst nie stillschweigend verloren geht.

Explodieren Sie, wenn die Liste die Analyseeinheit ist: Positionen, die Sie summieren werden, Ereignisse, die Sie zählen werden, Transaktionen, die Sie filtern werden. Wenn Sie solche Listen stattdessen verbinden, sind die Zahlen pro Element in einer Textzelle gefangen, und keine Tabellenformel holt sie sauber wieder heraus. Die Faustregel lautet: Wenn Sie jemals nach einzelnen Werten in der Liste filtern, sie zählen oder summieren werden, explodieren Sie die Liste. Wenn die Liste nur jemals als Ganzes gelesen wird, verbinden Sie sie.

Explodiert wird das durchgearbeitete Beispiel zu fünf Zeilen einschließlich der Kopfzeile: A-101 zweimal (book, dann pen), A-102 einmal (lamp), A-103 einmal mit einem leeren Artikel. Die Bestellfelder wiederholen sich in jeder Zeile, was überflüssig aussieht und genau der Punkt ist: Jede Zeile ist jetzt ein einzelner auswertbarer Fakt.

Explodieren oder verbinden? Entscheiden Sie nach der Bedeutung der Liste

Die Entscheidung zwischen Explodieren und Verbinden ist die eine Stelle, an der das Glätten leise schiefgeht, weil beide Ausgaben wie gültige CSV aussehen. Eine verbundene Liste mit Positionen lässt sich in Excel problemlos öffnen, und nichts warnt Sie, dass die Preise pro Position jetzt nicht wiederherstellbarer Text sind. Stellen Sie vor dem Glätten eine Frage pro Liste, und die Wahl trifft sich von selbst.

  • Werde ich nach einzelnen Werten in dieser Liste filtern, sie zählen oder summieren? Wenn ja, explodieren Sie die Liste. Positionen, Ereignisse, Transaktionen und Messwerte gehören alle hierher.
  • Wird die Liste nur jemals als Ganzes gelesen? Wenn ja, verbinden Sie sie. Tags, Kategorien, Fähigkeiten und Labels gehören alle hierher.
  • Sind Sie unsicher? Explodieren Sie. Eine explodierte Tabelle lässt sich jederzeit wieder zu verbundenen Zellen gruppieren, aber eine verbundene Zelle lässt sich nicht zuverlässig wieder in Zeilen aufteilen, weil das Trennzeichen auch in einem Wert vorkommen kann.
  • Enthält die Liste Objekte und keine einfachen Werte? Dann gilt keiner der beiden Schritte direkt: Eine Objektliste wird beim Verbinden zu einer Zelle mit JSON-Text, oder sie braucht vor dem Explodieren erst Felder mit Punkten. Diesen Fall behandelt der Abschnitt zur Tiefe.

Wie tief sollten Sie glätten?

Bis zu den Blättern zu glätten fühlt sich gründlich an, und es erzeugt die schlechtesten Tabellen: Dutzende Spalten mit vierstufigen Namen mit Punkten, die meisten davon leer, keine davon lesbar. Glätten Sie bis zu der Tiefe, die Sie wirklich nutzen werden. Wenn Sie nach einem Feld filtern oder sortieren werden, geben Sie ihm eine Spalte. Wenn Sie es nur jemals im Zusammenhang lesen werden, lassen Sie diesen Teilbaum als eine Zelle mit JSON-Text.

Eine praktische Stopp-Regel lautet: Glätten Sie zwei bis drei Ebenen tief, und behalten Sie alles Tiefere als JSON-Text. Eine Sendungsverfolgungsliste mit Versandobjekten zum Beispiel ist echte Information, aber sie gehört selten in Spalten: Eine Sendungsverfolgungszelle mit dem JSON-Text hält die Tabelle lesbar, und die ursprüngliche JSON-Datei behält die vollständigen Details. Die geglättete CSV ist eine abgeleitete Ansicht Ihrer Daten, kein Ersatz dafür, deshalb behalten Sie die ursprüngliche JSON-Datei.

Uneinheitliche Daten: fehlende Schlüssel, leere Listen und Nullwerte

Echtes JSON ist uneinheitlich: Ein Datensatz hat ein Feld, das dem nächsten fehlt, eine Liste ist leer, ein Wert ist null. Beim Glätten gelten für alle drei Fälle dieselben einfachen Regeln, und einfach ist genau das, was Sie wollen: Die Kopfzeile ist die Vereinigung aller Schlüssel, die irgendwo in den Daten gefunden werden, und jeder Datensatz, dem ein Schlüssel fehlt, bekommt dort eine leere Zelle. Kein Fehler, keine verlorene Zeile, nur eine leere Zelle, die Sie sehen können.

Leere Listen und Nullwerte folgen in beiden Schritten derselben Regel. Verbunden wird eine leere Liste zu einer leeren Zelle. Explodiert ergibt eine leere Liste trotzdem eine Zeile mit einem leeren Element, sodass der übergeordnete Datensatz erhalten bleibt. Ein Nullwert in einer Liste wird zu einem leeren Abschnitt zwischen den Trennzeichen: Eine Liste aus mug, null und plate verbindet sich zu mug; ; plate, wobei die Lücke genau dort sichtbar ist, wo der Nullwert war.

Nullwerte und leere Abschnitte, gegen das echte Programm geprüft
orderId,items
A-101,book; pen
A-103,mug; ; plate

Rezept 1: Python, json_normalize plus explode

Python mit pandas ist der nachsichtigste Weg, weil json_normalize die Objekte glättet und explode die Listen in zwei lesbaren Zeilen übernimmt. Ausgeführt auf der Testdatei mit drei Bestellungen erzeugte json_normalize die Spalten orderId, items, total, customer.name und customer.city, und explode auf items verwandelte 3 Zeilen in 4, wobei die leere Liste eine Zeile mit einem leeren Element zurückließ.

flatten.py, json_normalize plus explode (geprüft)
import json
import pandas as pd

rows = json.load(open('orders.json'))
df = pd.json_normalize(rows)
flat = df.explode('items')
flat.to_csv('orders-flat.csv', index=False)

Wenn Sie statt des Explodierens den Verbindungsschritt wollen, lassen Sie die explode-Zeile weg: json_normalize lässt die Liste als Liste, und eine einzeilige Verbindung verwandelt sie in die Zelle mit Semikolon-Trennung. Dasselbe Skript deckt also beide Entscheidungen ab, und genau deshalb ist es das Rezept, nach dem Sie greifen sollten, wenn das Glätten kein einmaliger Vorgang ist.

Rezept 2: jq, Explodieren mit einem Befehl

Mit jq explodieren Sie eine Liste in einem einzigen Befehl, ohne Skriptdatei und ohne Abhängigkeiten außer jq selbst. Das Rezept unten bindet jede Bestellung an eine Variable, prüft, ob ihre Artikelliste leer ist, und gibt entweder eine Zeile mit einem leeren Artikel oder eine Zeile pro Artikel aus. Ausgeführt auf dem durchgearbeiteten Beispiel erzeugte es genau die fünfzeilige Ausgabe, die im Abschnitt zum Explodieren beschrieben ist: A-101 zweimal, A-102 einmal, A-103 einmal mit einem leeren Artikel.

jq: Artikel in eine Zeile pro Element aufspalten (geprüft)
jq -r '. as $rows | (["orderId","name","city","item","total"] | @csv), ($rows[] | . as $o | if (.items | length) == 0 then [$o.orderId, $o.customer.name, $o.customer.city, "", $o.total] | @csv else (.items[] | [$o.orderId, $o.customer.name, $o.customer.city, ., $o.total] | @csv) end)' orders.json

Der Zweig für leere Listen ist der Teil, den die meisten jq-Rezepte zum Explodieren im Netz weglassen, und er ist der Teil, der Daten verliert: Ohne ihn verschwinden Bestellungen ohne Artikel vollständig aus der Ausgabe. Behalten Sie ihn, auch wenn Ihre aktuellen Daten keine leeren Listen haben, weil die nächste Datei welche haben wird.

Rezept 3: Excel Power Query, ohne Code

Wenn Ihr Ziel ohnehin Excel ist, glättet Power Query JSON ganz ohne Code. Importieren Sie über Daten, dann Daten abrufen, dann Aus Datei, dann Aus JSON, und Power Query zeigt jeden Datensatz als Zeile mit noch gefalteten verschachtelten Spalten. Die zwei Erweiterungsvorgänge entsprechen genau den zwei Listenschritten in dieser Anleitung, und die falsche Wahl ist derselbe Fehler wie in jedem Werkzeug.

  • Erweitern Sie eine Datensatzspalte (customer) mit dem Erweiterungspfeil und setzen Sie dann Häkchen bei den Feldern, die Sie wollen: name und city werden zu einfachen Spalten. Das ist Schritt 1.
  • Erweitern Sie eine Listenspalte (items) mit dem Erweiterungspfeil und wählen Sie In neue Zeilen erweitern, um sie zu explodieren: eine Zeile pro Element, übergeordnete Felder wiederholt. Das ist Schritt 3.
  • Erweitern Sie eine Listenspalte und wählen Sie Werte extrahieren, mit einem Trennzeichen aus Semikolon und Leerzeichen, um sie in einer Zelle zu verbinden. Das ist Schritt 2.
  • Wiederholen Sie das für jede verschachtelte Spalte, bis die Tabelle in der benötigten Tiefe flach ist, dann Schließen und laden.

Rezept 4: Der Online-Konverter verbindet, explodiert aber nie

Der kostenlose Konverter auf dieser Seite glättet mit eingeschaltetem Glättungsschalter: Verschachtelte Objekte werden zu Spalten mit Punktnotation, und Listen verbinden sich zu Zellen mit Semikolon-Trennung, genau die Schritte 1 und 2. Schalten Sie den Schalter aus, und verschachtelte Werte bleiben als JSON-Text in ihren Zellen, was die Option Verschachtelt lassen aus dem Titel ist. Was der Konverter nicht tut, ist Explodieren: Es gibt keine Option, die aus einer Bestellung eine Zeile pro Artikel macht.

Das ist eine ehrliche Einschränkung, kein Fehler. Das Explodieren ändert die Zeilenanzahl, was eine Entscheidung über das Datenmodell ist, und ein Konverter mit einem Klick sollte diese Entscheidung nicht stillschweigend treffen. Wenn Ihre Liste explodiert werden muss, nutzen Sie das Python- oder jq-Rezept oben, und nutzen Sie den Konverter für die vielen Dateien, in denen Verbinden die richtige Wahl ist.

Den kostenlosen JSON-zu-CSV-Konverter öffnen

Kann man die Daten wieder zurückverwandeln?

Das Glätten lässt sich für Objekte leicht und für explodierte Listen nur schwer exakt rückgängig machen, deshalb planen Sie dafür. Spalten mit Punkten lassen sich mit einem kleinen Skript wieder in verschachtelte Objekte aufteilen, und nichts geht verloren, weil die Punkte den vollständigen Pfad festgehalten haben. Explodierte Zeilen lassen sich mit einer Gruppierung nach dem übergeordneten Schlüssel wieder gruppieren, wobei die Artikel wieder in einer Liste gesammelt werden, aber die ursprüngliche Reihenfolge der Elemente überlebt nur, wenn Sie einen Zeilenindex behalten haben, und die ursprünglichen leeren Listen sind von fehlenden Listen nicht zu unterscheiden.

Daraus folgt die praktische Regel: Behandeln Sie die geglättete CSV nie als Ihre einzige Kopie. Behalten Sie die ursprüngliche JSON-Datei, behandeln Sie die CSV als abgeleitete Ansicht, die für eine Auswertung gebaut wurde, und glätten Sie aus dem JSON neu, wenn sich die Auswertung ändert. Speicherplatz ist billig, und das Neuerzeugen aus der Quelle ist besser als die Fehlersuche in einer CSV, die leise Struktur verloren hat.

Checkliste zum Glätten

Bevor Sie eine JSON-Datei glätten, gehen Sie diese sechs Prüfungen durch. Sie dauern eine Minute, und sie fangen jeden Fehlermodus in dieser Anleitung ab.

  • Benennen Sie zuerst die Analyseeinheit: eine Zeile pro Bestellung, pro Artikel oder pro Ereignis? Diese Antwort wählt für jede Liste Explodieren oder Verbinden.
  • Glätten Sie Objekte bis zu der Tiefe, nach der Sie filtern oder sortieren werden, und lassen Sie tiefere Teilbäume als JSON-Text.
  • Prüfen Sie jede Liste: Einfache Werte lassen sich sauber verbinden oder explodieren, aber eine Liste aus Objekten braucht erst Felder mit Punkten, bevor einer der beiden Schritte sinnvoll ist.
  • Rechnen Sie mit uneinheitlichen Daten: Fehlende Schlüssel werden zu leeren Zellen, leere Listen werden zu einer leeren Zeile oder Zelle, Nullwerte werden zu leeren Abschnitten.
  • Achten Sie auf Punkte in Schlüsselnamen: Ein Schlüssel wie version.2 kollidiert mit einem verschachtelten Pfad desselben Namens, und einer von beiden gewinnt stillschweigend.
  • Behalten Sie das ursprüngliche JSON. Die geglättete CSV ist eine abgeleitete Ansicht, nicht die Quelle der Wahrheit.

Verwandte Anleitungen

Häufig gestellte Fragen

Was bedeutet es, JSON-Daten zu glätten?

Es bedeutet, einen verschachtelten JSON-Baum in eine flache Tabelle aus Zeilen und Spalten zu verwandeln. Verschachtelte Objekte werden zu Spalten mit Punktnotation (customer.name), Listen aus einfachen Werten verbinden sich in einer Zelle (book; pen) oder explodieren zu einer Zeile pro Element, und alles, was Sie nicht glätten, bleibt als JSON-Text in einer Zelle.

Sollte ich verschachteltes JSON vor dem Umwandeln in CSV glätten?

Ja, es sei denn, Sie wollen JSON-Text in Ihren CSV-Zellen. CSV kennt keine Verschachtelung, deshalb müssen verschachtelte Daten geglättet, verbunden oder als Text belassen werden. Das Glätten mit eingeschaltetem Schalter gibt Ihnen echte Spalten, nach denen Sie filtern und sortieren können. Ausgeschaltet bleiben verschachtelte Werte als lesbarer JSON-Text in einzelnen Zellen.

Wie glätte ich ein JSON-Array in Zeilen, eine pro Element?

Explodieren Sie es. In Python: pd.json_normalize(rows), dann df.explode('items'). In jq: Binden Sie jeden Datensatz an eine Variable und geben Sie eine Zeile pro Element aus, mit einem ausdrücklichen Zweig für leere Listen, damit Datensätze ohne Elemente nicht verloren gehen. Beide Rezepte stehen in dieser Anleitung und wurden am durchgearbeiteten Beispiel geprüft.

Wie glätte ich JSON in Python?

Nutzen Sie pandas: Laden Sie die Datei mit json.load, glätten Sie mit pd.json_normalize(rows) verschachtelte Objekte zu Spalten mit Punktnotation, und verbinden Sie dann Listenspalten mit einem Trennzeichen oder nutzen Sie df.explode('items'), um eine Zeile pro Element zu erhalten. Für verschachtelte Objekte ohne pandas leistet eine kleine rekursive Glättungsfunktion, die Namen mit Punkten aufbaut, dieselbe Arbeit.

Wie glätte ich JSON in Excel?

Nutzen Sie Power Query: Daten, Daten abrufen, Aus Datei, Aus JSON. Erweitern Sie Datensatzspalten, um verschachtelte Objekte zu glätten, und erweitern Sie Listenspalten mit In neue Zeilen erweitern zum Explodieren oder mit Werte extrahieren zum Verbinden. Wiederholen Sie das pro verschachtelter Spalte, dann Schließen und laden.

Was passiert mit leeren Listen und Nullwerten beim Glätten von JSON?

Sie werden zu leeren Zellen oder leeren Abschnitten, nie zu Fehlern. Ein fehlender Schlüssel ergibt eine leere Zelle, eine leere Liste verbindet sich zu einer leeren Zelle oder explodiert zu einer Zeile mit einem leeren Element, ein Nullwert wird zu einer leeren Zelle, und ein Nullwert in einer Liste wird zu einem leeren Abschnitt zwischen Trennzeichen (mug; ; plate).

Kann ich JSON online glätten, ohne etwas zu installieren?

Ja. Fügen Sie JSON in einen kostenlosen Online-Konverter ein oder laden Sie eine Datei hoch, mit eingeschaltetem Glätten: Verschachtelte Objekte werden zu Spalten mit Punktnotation, und Listen verbinden sich in einer Zelle. Wenn Sie eine Liste in eine Zeile pro Element explodieren müssen, nutzen Sie stattdessen das Python- oder jq-Rezept in dieser Anleitung, weil Online-Konverter Listen verbinden und nicht explodieren.

Verschachteltes JSON? Glätten Sie es kostenlos im Browser

Fügen Sie JSON ein oder laden Sie eine Datei hoch: Verschachtelte Objekte glätten sich zu Spalten mit Punktnotation, Listen verbinden sich zu sauberen Zellen, und der Download ist einfaches UTF-8. Kostenlos, ohne Anmeldung, läuft vollständig in Ihrem Browser.

Den JSON-zu-CSV-Konverter öffnen
Alle Anleitungen