JSON

JSON Path Extractor / Flatten

Verschachteltes JSON in eine flache Liste "Pfad: Wert" auflösen (Flatten) und wieder in eine verschachtelte Struktur zusammensetzen (Unflatten). Die Pfadnotation ist dieselbe wie bei JSONPath/JSON Diff: store.book[0].price.

Deeply nested JSON is hard to compare or iterate over programmatically. Flatten unrolls such a structure into a flat list of "path: value" pairs (e.g. store.book[0].price: 12.99), and Unflatten rebuilds it.

How to use it

Common uses

Things to keep in mind

Array index notation varies between libraries — this tool uses items[0], though some write items.0 without brackets.

Unflatten requires that paths don't conflict with each other (e.g. one and one.two at the same time) — otherwise the structure can't be unambiguously rebuilt.

Artikel zu diesem Tool: JSON Flatten: eine verschachtelte Struktur in eine flache Liste verwandeln

Häufig gestellte Fragen

Wie werden Array-Elemente im flachen Pfad dargestellt?

Sie werden zu nummerierten Schlüsseln im Pfad, etwa store.book[0].price, wobei die Zahl in eckigen Klammern den Index des Elements im Array angibt.

Lässt sich das Flatten wieder rückgängig machen?

Ja, der Unflatten-Modus baut aus einer Liste „Pfad: Wert“ wieder verschachteltes JSON auf, mit derselben Pfadnotation wie beim Flatten.

Wird das JSON auf einem externen Server verarbeitet?

Nein, sowohl Flatten als auch Unflatten laufen vollständig im Browser über JavaScript, ohne dass Daten an einen Server gesendet werden.

Was passiert, wenn ein echter Schlüssel selbst einen Punkt enthält?

Das ist eine mehrdeutige Situation: Der Pfad user.name kann sowohl ein verschachteltes Objekt {"user": {"name": ...}} als auch einen flachen Schlüssel {"user.name": ...} bedeuten. Die Punktnotation unterscheidet das nicht, weshalb solche Schlüssel am besten vermieden oder gesondert behandelt werden sollten.

Ist das Pfadformat bei allen ähnlichen Tools gleich?

Nein. Die Punktnotation für Objekte (user.name) ist praktisch überall verbreitet, aber die Notation für Array-Indizes unterscheidet sich: Hier wird items[0] verwendet, manche Bibliotheken schreiben aber items.0 ohne Klammern.

Artikel: JSON