JSON zu CSV · Ruby
JSON zu CSV in Ruby
Ruby liefert mit json und csv zwei Standardbibliotheken, die zusammen ohne ein einziges Gem auskommen. Das CSV-Modul kümmert sich um das Quoting, json parst die Quelldatei. Damit ist die Umwandlung in wenigen Zeilen erledigt und eignet sich gut für Rake-Tasks oder schnelle Skripte.
Ansatz
Standardbibliotheken json und csv, CSV.open schreibt jede Zeile mit automatischem Quoting.
Code-Beispiel
require "json"
require "csv"
daten = JSON.parse(File.read("daten.json"))
# Spalten über alle Objekte sammeln
spalten = daten.flat_map(&:keys).uniq
CSV.open("daten.csv", "w", encoding: "UTF-8") do |csv|
csv << spalten
daten.each do |zeile|
csv << spalten.map { |key| zeile[key] }
end
end
puts "daten.csv geschrieben" Hinweise
Das CSV-Modul fügt Anführungszeichen nur dann hinzu, wenn ein Wert das Trennzeichen, ein Anführungszeichen oder einen Zeilenumbruch enthält, und verdoppelt vorhandene Anführungszeichen. Du musst dich also um nichts kümmern. Über die Optionen von CSV.open lässt sich das Verhalten fein steuern, etwa col_sep: ";" für das deutsche Excel-Format oder force_quotes: true, wenn jedes Feld in Anführungszeichen stehen soll. JSON.parse liefert verschachtelte Strukturen als Hash oder Array, die das CSV-Modul über to_s in eine Textdarstellung wie {"key"=>"wert"} überführt. Wenn du sauberes JSON in der Zelle willst, ruf vorher to_json auf dem Teilobjekt auf. Für Ruby on Rails gibt es zusätzlich generate_csv-Helfer, aber für reine Skripte bleibt die Standardbibliothek die schlankste Lösung. Die Encoding-Angabe stellt sicher, dass Umlaute korrekt als UTF-8 landen.
FAQ
Häufige Fragen
Wie erzwinge ich Anführungszeichen um jedes Feld?
Übergib CSV.open die Option force_quotes: true. Dann werden alle Werte in Anführungszeichen gesetzt, was manche Importer strikter und vorhersehbarer verarbeiten.
Wie bekomme ich ein Semikolon als Trenner für deutsches Excel?
Setze die Option col_sep: ";" beim CSV.open-Aufruf. Excel in der deutschen Version erwartet das Semikolon und legt die Spalten dann ohne Textimport-Assistenten korrekt an.
Du willst nicht selbst programmieren? Der JSON-zu-CSV-Converter wandelt deine Daten direkt im Browser um, ohne Upload und ohne Installation.