json-csv.de

JSON zu CSV · PowerShell

JSON zu CSV in PowerShell

PowerShell macht die Umwandlung zur kurzen 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 als CSV exportieren (Semikolon für deutsches Excel).
# Die Klammern um ConvertFrom-Json sind in Windows PowerShell 5.1 nötig:
# ohne sie wird das Array nicht in einzelne Objekte aufgelöst.
(Get-Content "daten.json" -Raw -Encoding UTF8 | ConvertFrom-Json) |
    Export-Csv "daten.csv" -NoTypeInformation -Delimiter ";" -Encoding UTF8

# Windows PowerShell 5.1: -Encoding UTF8 schreibt ein BOM
# PowerShell 7+: für ein BOM -Encoding utf8BOM verwenden

# Listen in Feldern (etwa tags) als Text ausgeben:
(Get-Content "daten.json" -Raw -Encoding UTF8 | ConvertFrom-Json) |
    Select-Object name, ort, @{ n = "tags"; e = { $_.tags -join ", " } } |
    Export-Csv "daten-tags.csv" -NoTypeInformation -Delimiter ";" -Encoding UTF8

Hinweise

ConvertFrom-Json erzeugt PSCustomObject-Instanzen, deren Eigenschaften Export-Csv direkt als Spalten übernimmt. Die Kopfzeile ergibt sich aus den Eigenschaften des ersten Objekts. In Windows PowerShell 5.1 liefert ConvertFrom-Json ein JSON-Array als ein einziges Objekt. Ohne die Klammern exportiert Export-Csv dann Eigenschaften wie Count und Length statt Ihrer Daten. Get-Content braucht in 5.1 außerdem -Encoding UTF8, weil das Cmdlet sonst die Windows-Codepage annimmt und Umlaute der Quelldatei verfälscht. Der Schalter -NoTypeInformation ist in 5.1 wichtig, sonst schreibt das Cmdlet eine zusätzliche #TYPE-Zeile als Kopf. In PowerShell 7 entfällt diese Zeile standardmäßig. Export-Csv setzt jedes Feld in Anführungszeichen, was strikt und importsicher ist. Beim Encoding gibt es einen Unterschied zwischen den Versionen: In 5.1 schreibt -Encoding UTF8 ein BOM, in 7 nicht. Dort geben Sie utf8BOM an, sonst zeigt Excel die Umlaute beim Doppelklick unter Umständen falsch an. Verschachtelte Objekte und Listen erscheinen als Typname wie System.Object[]. Machen Sie sie deshalb mit Select-Object und berechneten Eigenschaften zu Text, wie im zweiten Beispiel.

Anzeige

FAQ

Häufige Fragen

Wozu dient -NoTypeInformation?

In Windows PowerShell 5.1 schreibt Export-Csv ohne diesen Schalter eine #TYPE-Zeile als erste Zeile, 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 unter Umständen die System-Codepage. Nutzen Sie in Version 7 stattdessen -Encoding utf8BOM, dann stimmen ä, ö, ü und ß.

Sie wollen nicht selbst programmieren? Der JSON-CSV-Konverter wandelt Ihre Daten direkt im Browser um, ohne Upload und ohne Installation.

Anzeige
Anzeige
Anzeige
Anzeige