JSON Flatten / Unflatten

Vereinfachen Sie verschachtelte JSON-Objekte zu Punkt-Notation-Schlüsseln (z. B. user.address.city) und vereinfachen Sie sie zurück. Konfigurierbarer Trennzeichen und Array-Verarbeitung.

Flattened Output

12 keys
{
  "user.id": 42,
  "user.name": "Alice",
  "user.roles.0": "admin",
  "user.roles.1": "editor",
  "user.address.city": "Berlin",
  "user.address.country": "Germany",
  "user.address.zip": "10115",
  "user.preferences.theme": "dark",
  "user.preferences.notifications.email": true,
  "user.preferences.notifications.sms": false,
  "meta.version": "1.0",
  "meta.created": "2024-01-15"
}

So verwenden Sie JSON Flatten / Unflatten

  1. 1Fügen Sie ein verschachteltes JSON-Objekt in die Eingabe ein.
  2. 2Wählen Sie Flatten, um in Punkt-Notation-Schlüssel zu konvertieren, oder Unflatten, um zurück zu konvertieren.
  3. 3Konfigurieren Sie das Trennzeichen und kopieren Sie das Ergebnis.
ZenovayAnalytics

Sehen Sie, wer gerade auf Ihrer Seite ist.

  • Besucher-Tracking in Echtzeit
  • Datenschutz zuerst, kein Cookie-Banner
  • In zwei Minuten eingerichtet
Zenovay entdecken

Häufig gestellte Fragen

Was ist JSON-Flattening und wann ist es nützlich?
JSON-Flattening konvertiert verschachtelte Objekte in ein Objekt auf einer Ebene, wobei verschachtelte Schlüssel mit einem Trennzeichen (normalerweise Punkt) verbunden werden. Beispiel: {"user": {"name": "Alice", "address": {"city": "Berlin"}}} → {"user.name": "Alice", "user.address.city": "Berlin"}. Anwendungsfälle: Flattening für die Speicherung in Datenbankspalten (NoSQL-zu-SQL-Migration), Vereinfachung stark verschachtelter API-Antworten, Einspeisen in Machine-Learning-Pipelines, die tabellarische Daten erwarten, Elasticsearch-Dokument-Indizierung und Versand von Analyseereignissen mit flachen Eigenschaften.
Wie funktioniert Array-Flattening?
Arrays werden mit ihrem Index als Teil des Schlüssels flatten. Beispiel: {"tags": ["js", "ts"]} → {"tags.0": "js", "tags.1": "ts"} mit Punkt-Trennzeichen oder {"tags[0]": "js", "tags[1]": "ts"} mit Klammer-Notation. Verschachtelte Arrays: {"matrix": [[1,2],[3,4]]} → {"matrix.0.0": 1, "matrix.0.1": 2, "matrix.1.0": 3, "matrix.1.1": 4}. Das Rekonstruieren von Arrays beim Unflatten erfordert das Wissen, welche Schlüssel numerische Indizes sind. Einige Tools bewahren die Array-Struktur beim Unflatten; andere konvertieren sie in Objekte.
Welche Trennzeichen werden häufig für flache Schlüssel verwendet?
Punkt (.): am häufigsten, intuitiv, Konflikte mit Schlüsseln, die Punkte enthalten. Unterstrich (_): vermeidet Konflikte mit Punkten, wird in einigen Datenbankkonventionen für Spaltennamen verwendet. Doppelter Unterstrich (__): vermeidet Konflikte mit einzelnen Unterstrichen, wird in Django-Umgebungsvariablen und Helm-Chartenwerten verwendet. Schrägstrich (/): wird in JSON Pointer (RFC 6901) verwendet — "/user/address/city". Doppelpunkt (:): wird in einigen Konfigurationssystemen verwendet. Beste Praktiken: Wählen Sie ein Trennzeichen, das nicht in Ihren bestehenden Schlüsselnamen vorkommt. Vermeiden Sie Punkte, wenn Schlüssel möglicherweise Paketnamen oder Domänennamen enthalten.
Was ist JSON Pointer (RFC 6901)?
JSON Pointer ist ein IETF-Standard (RFC 6901) für die Referenzierung eines bestimmten Werts innerhalb eines JSON-Dokuments. Format: /key/subkey/index. Root-Dokument: "". Erstes Array-Element: "/0". Verschachtelter Wert: "/user/address/city". Spezialzeichen: "~0" stellt "~" dar, "~1" stellt "/" dar. Verwendet in: JSON Patch (RFC 6902) für Teilaktualisierungen, JSON Schema $ref, OpenAPI-Pfadreferenzen. Beispiel: PATCH mit {"op": "replace", "path": "/user/address/city", "value": "London"} ändert einen verschachtelten Wert ohne das gesamte Dokument zu ersetzen.
Wie flatten ich JSON in JavaScript ohne eine Bibliothek?
function flatten(obj, prefix = "", sep = ".") { return Object.entries(obj).reduce((acc, [key, val]) => { const newKey = prefix ? prefix + sep + key : key; if (val && typeof val === "object" && !Array.isArray(val)) { Object.assign(acc, flatten(val, newKey, sep)); } else if (Array.isArray(val)) { val.forEach((item, i) => { if (item && typeof item === "object") { Object.assign(acc, flatten(item, newKey + sep + i, sep)); } else { acc[newKey + sep + i] = item; } }); } else { acc[newKey] = val; } return acc; }, {}); }. Für die Umkehrung (unflatten) teilen Sie jeden Schlüssel durch das Trennzeichen und rekonstruieren die verschachtelte Struktur.