json-csv.de

JSON zu CSV · Ruby

JSON zu CSV in Ruby

Ruby liefert mit json und csv zwei Bibliotheken, die zusammen ohne Zusatz-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

Bibliotheken json und csv, CSV schreibt jede Zeile mit automatischem Quoting.

Code-Beispiel

require "json"
require "csv"

daten = JSON.parse(File.read("daten.json", encoding: "UTF-8"))

# Spalten über alle Objekte sammeln
spalten = daten.flat_map(&:keys).uniq

# Semikolon für deutsches Excel, BOM damit Umlaute stimmen
File.open("daten.csv", "w:UTF-8") do |datei|
  datei.write("\uFEFF")
  csv = CSV.new(datei, col_sep: ";")
  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. Sie müssen sich also nicht um das Escaping kümmern. Über die Optionen von CSV.new lässt sich das Verhalten steuern, etwa col_sep für das Trennzeichen 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 mit to_s in die Ruby-Textdarstellung überführt. Wenn Sie JSON in der Zelle wollen, rufen Sie vorher to_json auf dem Teilobjekt auf. Ab Ruby 3.4 gehört csv zu den Bundled Gems. Unter Bundler tragen Sie deshalb gem "csv" in die Gemfile ein.

Anzeige

FAQ

Häufige Fragen

Wie erzwinge ich Anführungszeichen um jedes Feld?

Übergeben Sie CSV.new 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?

Setzen Sie die Option col_sep: ";" beim CSV.new-Aufruf. Deutsches Excel erwartet das Semikolon und legt die Spalten beim Öffnen per Doppelklick dann korrekt an.

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