Ich erstelle einen Hash in Ruby und möchte ihn im richtigen Format in eine JSON-Datei schreiben.
Hier ist mein Code:
tempHash = {
"key_a" => "val_a",
"key_b" => "val_b"
}
fJson = File.open("public/temp.json","w")
fJson.write(tempHash)
fJson.close
Und hier ist der Inhalt der resultierenden Datei:
key_aval_akey_bval_b
Ich verwende Sinatra (weiß nicht welche Version) und Ruby v 1.8.7.
Wie kann ich dies im richtigen JSON-Format in die Datei schreiben?
Antworten:
Benötigen Sie die JSON- Bibliothek und verwenden Sie
to_json
.Ihre temp.json-Datei sieht jetzt so aus:
quelle
File.open(...){ |f| f << h.to_json }
JSON.pretty_generate(tempHash)
ist auch rad ruby-doc.org/stdlib-1.9.3/libdoc/json/rdoc/…Mit Formatierung
Ausgabe
quelle
pretty_generate
, es sei denn, der Verbraucher der Ausgabe ist ein Mensch. Selbst dann ist es besser, JSONlines zu generieren und so etwas wiejq
die Ausgabe zu sehen.Diese Frage bezieht sich auf Ruby 1.8, kommt aber beim Googeln immer noch an die Spitze.
in ruby> = 1.9 können Sie verwenden
Anders als in anderen Antworten erwähnt, können Sie in Ruby 1.8 auch eine Liner-Form verwenden
quelle
So funktioniert dies unter Ubuntu Linux:
Ich habe das Ubuntu-Paket ruby-json installiert:
Ich habe das Drehbuch geschrieben
${HOME}/rubybin/jsonDEMO
$HOME/.bashrc
inbegriffen:(Bei dieser Gelegenheit habe ich auch das Obige in die Bash-Befehlszeile eingegeben.)
Dann hat es funktioniert, als ich in die Kommandozeile eingegeben habe:
quelle