JSON zu CSV · PowerShell
JSON zu CSV in PowerShell
PowerShell macht die Umwandlung zur Einzeiler-Pipeline: ConvertFrom-Json liest die Quelle, Export-Csv schreibt das Ergebnis samt Quoting. Auf Windows ist das oft der direkteste Weg, ohne ein zusätzliches Werkzeug zu installieren. Das eignet sich für Admin-Skripte und das Aufbereiten von API-Daten.
Ansatz
ConvertFrom-Json wandelt JSON in Objekte, Export-Csv schreibt sie mit automatischem Quoting.
Code-Beispiel
# JSON einlesen und direkt als CSV exportieren
Get-Content "daten.json" -Raw |
ConvertFrom-Json |
Export-Csv "daten.csv" -NoTypeInformation -Encoding UTF8
# Windows PowerShell 5.1: -Encoding UTF8 schreibt ein BOM
# PowerShell 7+: für BOM -Encoding utf8BOM verwenden
# Variante mit Semikolon für deutsches Excel:
Get-Content "daten.json" -Raw |
ConvertFrom-Json |
Export-Csv "daten.csv" -NoTypeInformation -Delimiter ";" -Encoding UTF8 Hinweise
ConvertFrom-Json erzeugt PSCustomObject-Instanzen, deren Eigenschaften Export-Csv direkt als Spalten übernimmt, die Spaltenüberschriften ergeben sich also automatisch aus den JSON-Schlüsseln. Der Schalter -NoTypeInformation ist in Windows PowerShell 5.1 wichtig, sonst schreibt das Cmdlet eine zusätzliche Typzeile als Kopf, die kein Tabellenprogramm erwartet. In PowerShell 7 entfällt diese Zeile bereits standardmäßig. Export-Csv quotet jedes Feld in Anführungszeichen, was strikt und importsicher ist. Beim Encoding gibt es einen wichtigen Unterschied zwischen den Versionen: In 5.1 schreibt -Encoding UTF8 ein BOM, in 7 musst du dafür utf8BOM angeben, sonst zeigt Excel die Umlaute falsch an. Verschachtelte Objekte erscheinen als Typname statt als Wert, deshalb solltest du sie vorher mit Select-Object und berechneten Eigenschaften flach ziehen oder mit ConvertTo-Json in eine Zeichenkette umwandeln. Das Trennzeichen stellst du über -Delimiter um.
FAQ
Häufige Fragen
Wozu dient -NoTypeInformation?
In Windows PowerShell 5.1 schreibt Export-Csv ohne diesen Schalter eine #TYPE-Zeile als ersten Header, die kein Programm als Daten erwartet. In PowerShell 7 ist das Verhalten bereits ohne den Schalter sauber.
Warum sind Umlaute trotz -Encoding UTF8 falsch?
In PowerShell 7 schreibt -Encoding UTF8 kein BOM. Excel rät dann auf die System-Codepage. Nutze in Version 7 stattdessen -Encoding utf8BOM, dann stimmen ä, ö, ü und ß.
Du willst nicht selbst programmieren? Der JSON-zu-CSV-Converter wandelt deine Daten direkt im Browser um, ohne Upload und ohne Installation.