Konvertiert ein Array von JSON-Objekten in RFC-4180-CSV. Klappt verschachtelte Objekte in punktierte Spalten, behandelt sparse Datensätze und bietet Komma-, Semikolon-, Tab- oder Pipe-Trennzeichen plus ein Excel-BOM.
Datensätze in eine Tabelle flachklopfen. Fügen Sie ein Array von Objekten ein und erhalten Sie CSV mit Kopfzeile zurück. Verschachtelte Objekte werden zu punktierten Spaltennamen, fehlende Felder zu leeren Zellen, und Werte mit dem Trennzeichen werden gemäß RFC 4180 in Anführungszeichen gesetzt.
–
Einen Baum in eine Tabelle verwandeln
Die Forminkongruenz
JSON ist ein Baum und CSV ein Rechteck, also muss jede Konvertierung entscheiden, was mit den Teilen des Baums geschieht, die nicht passen. Die eine Form, die sauber abbildet, ist ein Array flacher Objekte: jedes Objekt wird eine Zeile und jeder Schlüssel eine Spalte. Alles andere braucht eine Regel.
Verschachtelte Objekte sind der einfache Fall. {"role": {"team": "core"}} wird zu einer Spalte namens role.team, was den Wert adressierbar hält und von den meisten Import-Assistenten für Tabellen verstanden wird. Verschachtelte Arrays sind schwieriger, weil ihre Expansion die Zeilenzahl ändern und die umgebenden Daten stillschweigend duplizieren würde. Dieser Konverter behält sie als JSON-Text in einer einzelnen Zelle, was die Abfragbarkeit verliert, aber niemals Datensätze erfindet, die nicht in der Quelle waren.
Sparse Datensätze und Spaltenreihenfolge
JSON aus der Praxis ist selten einheitlich. Ein Datensatz hat einen nickname, der nächste nicht; ein Feld erscheint erst nach einem Migrationsdatum. Ein Konverter, der seine Spalten nur aus dem ersten Objekt nähme, würde alles andere stillschweigend fallen lassen.
Die Spaltenliste hier ist die Vereinigung jedes Schlüssels über alle Datensätze hinweg, in Erst-Sicht-Reihenfolge. Datensätze, denen ein Feld fehlt, erhalten eine leere Zelle statt übersprungen zu werden, sodass die Zeilenzahl stets mit der Eingabelänge übereinstimmt. Erst-Sicht-Reihenfolge wird gegenüber alphabetisch gewählt, weil sie die beabsichtigte Gruppierung des Autors bewahrt – id und name bleiben vorne statt verstreut.
Anführungszeichen, Trennzeichen und Excel
RFC 4180 verlangt, dass ein Feld in Anführungszeichen gesetzt wird, wenn es das Trennzeichen, ein doppeltes Anführungszeichen oder einen Zeilenumbruch enthält, und ein eingebettetes Anführungszeichen wird durch Verdopplung escaped. Dieses Tool wendet diese Regel auf jede Zelle an, einschließlich der Kopfzeile, sodass ein Wert wie Grace, Jr. oder eine mehrzeilige Adresse einen Round-Trip durch jeden konformen Parser übersteht.
Die Wahl des Trennzeichens ist wichtiger, als sie aussieht. In Gebieten, in denen das Komma das Dezimaltrennzeichen ist – weite Teile des kontinentalen Europas – erwartet Excel ein Semikolon und würde sonst die ganze Zeile in Spalte A werfen. Die BOM-Option stellt ein UTF-8-Byte-Order-Mark voran, das Excel unter Windows sagt, die Datei als UTF-8 statt des veralteten Codepage zu lesen; ohne sie kommen Nicht-ASCII-Namen verstümmelt an. Beide Optionen liegen abseits des Standardpfads, eben weil sie andere Tools brechen, also aktivieren Sie sie nur für Excel.
FAQ
Welche Eingabeform wird erwartet?
Ein Array von Objekten, wobei jedes Objekt eine Zeile ist. Ein einzelnes Objekt wird akzeptiert und erzeugt eine Zeile, aber ein Array aus Strings oder Zahlen kann keine Tabelle ergeben.
Wie werden verschachtelte Objekte behandelt?
Sie werden zu punktierten Spaltennamen flachgeklopft, also wird {"role": {"team": "core"}} zu einer Spalte namens role.team. Schalten Sie das Flachklopfen aus, um sie stattdessen als JSON-Text zu behalten.
Warum bleiben verschachtelte Arrays als JSON?
Ihre Expansion würde die Zeilenzahl ändern und die umgebenden Felder duplizieren. Sie in einer Zelle zu behalten bedeutet, dass die Ausgabe stets genau so viele Zeilen hat wie die Eingabe Datensätze hatte.
Was passiert, wenn Datensätze unterschiedliche Schlüssel haben?
Die Kopfzeile ist die Vereinigung aller Schlüssel über alle Datensätze in Erst-Sicht-Reihenfolge, und jeder Datensatz, dem ein Feld fehlt, erhält eine leere Zelle. Kein Datensatz wird übersprungen.
Wann sollte ich die BOM-Option verwenden?
Nur für Excel unter Windows. Das Byte-Order-Mark sagt ihm, die Datei als UTF-8 zu lesen; ohne es werden Nicht-ASCII-Zeichen falsch gelesen. Andere Tools zeigen das BOM möglicherweise als falsche Zeichen.
Warum öffnet meine Datei in einer Spalte in Excel?
Excel folgt dem Listentrennzeichen Ihrer Locale. In Gebieten, die ein Komma als Dezimaltrennzeichen verwenden, erwartet es ein Semikolon, also wechseln Sie das Trennzeichen auf Semikolon und öffnen Sie erneut.