json.csv.de

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.

Anzeige

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.

Anzeige
Anzeige
Anzeige
Anzeige