Menü

Werkzeuge durchsuchenÄnderungsprotokoll

zum Navigieren zum ÖffnenBeschreiben Sie das Problem, nicht das Tool

Reduzieren Sie verschachteltes JSON in CSV-Spalten

Wählen Sie „Objekte auf Punktpfade reduzieren“. Ein verschachtelter Wert wie „profile.city“ wird zu einer „profile.city“-Spalte, und Schlüssel, die in späteren Datensätzen gefunden werden, werden mit demselben zuerst angezeigten Header verknüpft. Bei Arrays bleibt der JSON-Text in einer Zelle, da die Erweiterung einer beliebigen Liste dazu führen würde, dass die Anzahl und Bedeutung der Spalten von jeder Zeile abhängt.

Ein JSON-Objekt, ein Array aus Objekten oder ein Array aus Arrays bis 20 MB. Die Datei wird nur in diesem Tab geparst.

Abflachen macht aus profile.city eine eigene Spalte. Arrays bleiben JSON, damit eine lange Liste nicht Tausende Spalten erzeugt.

Komma ist der CSV-Standard. Semikolon passt besser zu Regionen mit Dezimalkomma; Tabulator erzeugt eine TSV-ähnliche Datei.

Text, der mit =, +, - oder @ beginnt, erhält ein Präfix. So kann das Öffnen nicht vertrauenswürdiger Daten keine Formel ausführen.

Geschriebene Zeilen
Eine Zeile je Objekt oder innerem Array; ein einzelnes Objekt auf oberster Ebene wird zu einer Zeile.
Geschriebene Spalten
Eingabestruktur
Ausgabegröße (Bytes)
Das Wichtigste
  1. Verschachtelte Objektschlüssel werden zu stabilen Punktpfaden, sodass „address.city“ und „address.country“ weiterhin sichtbar miteinander verbunden bleiben.

  2. Arrays bleiben in einer Zelle in Anführungszeichen serialisiert, anstatt Elementpositionen in einen unbegrenzten Satz von Spalten umzuwandeln.

  3. Ein Literalschlüssel, der einen Punkt enthält, wird mit einem Backslash maskiert, sodass er nicht mit einem verschachtelten Pfad kollidieren kann.

So funktioniert es

So wird es gemacht

  1. Lies die ausgewählte Datei im Worker als striktes UTF-8 und parse genau einen gültigen JSON-Wert. Binäre, ungültige oder nach dem Wert fortgesetzte Daten werden abgelehnt.
  2. Akzeptiere ein einzelnes Objekt als eine Zeile, ein Array aus Objekten als Datensätze oder ein Array aus Arrays als positionsbezogene Zeilen. Andere oberste Strukturen erhalten keine erfundene Tabellenspalte.
  3. Bestimme die Spalten als Vereinigung aller Schlüssel in der Reihenfolge ihres ersten Auftretens. Bei Arrays entspricht die Breite dem längsten inneren Array.
  4. Behandle verschachtelte Werte nach der Auswahl. Als JSON bleiben sie in einer Zelle; beim Abflachen werden Objektpfade wie profile.city zu eigenen Spalten, während Arrays kompakt bleiben.
  5. Schreibe null und fehlende Werte als leere Zelle, boolesche Werte und Zahlen in JSON-Schreibweise und Zeichenketten ohne Typumdeutung.
  6. Schütze auf Wunsch Text, der mit =, +, - oder @ beginnt, durch ein führendes Apostroph vor einer Auswertung als Tabellenformel.
  7. Quote Felder mit Trennzeichen, Anführungszeichen oder Zeilenumbrüchen nach RFC 4180, verdopple innere Anführungszeichen und schreibe CRLF-Zeilenenden.
  8. Füge optional die dreibyte UTF-8-Markierung hinzu und biete die vollständige CSV- oder TSV-Datei zum Download an.

Wovon es ausgeht

  • Ein Objekt auf oberster Ebene wird zu genau einer Zeile; ein Array aus Objekten zu einer Zeile je Objekt und ein Array aus Arrays zu positionsbezogenen Zeilen.
  • Verschachtelte Arrays werden nicht in zusätzliche Tabellenzeilen aufgespalten. Dafür wäre eine relationale Zuordnung nötig, die das JSON nicht vorgibt.
  • CSV kann fehlend und null nicht zuverlässig unterscheiden. Beide werden als leere Zelle geschrieben.
  • Zahlen bleiben JSON-Zahlen mit Punkt als Dezimaltrenner. Erst das Tabellenprogramm entscheidet über die Anzeige im Gebietsschema.
  • Die Formelabsicherung wird nur auf ursprüngliche Zeichenketten angewendet. Eine negative JSON-Zahl bleibt eine Zahl.
  • Eingabe und Ausgabe liegen während der Konvertierung im Arbeitsspeicher; die Eingabe ist daher auf 20 MB und die Breite auf 10.000 Spalten begrenzt.

Fragen

Warum werden JSON-Arrays nicht in nummerierte CSV-Spalten erweitert?

Bei der Array-Länge handelt es sich um Daten, nicht um ein Schema. Das Erweitern von Positionen würde dazu führen, dass ein ungewöhnlich langer Datensatz Tausende von Spalten hinzufügt und das Element Null in verschiedenen Zeilen wie dasselbe Feld aussieht, auch wenn dies nicht der Fall ist.

Wie wird ein Punkt innerhalb eines ursprünglichen JSON-Schlüssels dargestellt?

Ein wörtlicher Punkt oder Backslash in einem Schlüssel wird mit einem Backslash maskiert, bevor Pfadsegmente verbunden werden, sodass der Schlüssel „profile.city“ und der verschachtelte Pfad „profile then city“ unterschiedliche Überschriften bleiben.

Quellen

Die vollständige Methode, das Rechenbeispiel und alle Annahmen hinter diesem Ergebnis stehen auf JSON in CSV umwandeln.