Saya membuat hash di Ruby dan ingin menulisnya ke file JSON, dalam format yang benar.
Ini kode saya:
tempHash = {
"key_a" => "val_a",
"key_b" => "val_b"
}
fJson = File.open("public/temp.json","w")
fJson.write(tempHash)
fJson.close
Dan berikut adalah isi dari file yang dihasilkan:
key_aval_akey_bval_b
Saya menggunakan Sinatra (tidak tahu versi apa) dan Ruby v 1.8.7.
Bagaimana saya bisa menulis ini ke file dalam format JSON yang benar?
Jawaban:
Memerlukan pustaka JSON , dan gunakan
to_json
.File temp.json Anda sekarang terlihat seperti:
sumber
File.open(...){ |f| f << h.to_json }
JSON.pretty_generate(tempHash)
juga rad ruby-doc.org/stdlib-1.9.3/libdoc/json/rdoc/…Dengan format
Keluaran
sumber
pretty_generate
, kecuali konsumen output adalah manusia. Meski begitu, lebih baik untuk membuat JSONlines dan menggunakan sesuatu sepertijq
untuk melihat hasilnya.Pertanyaan ini untuk ruby 1.8 tetapi masih menjadi yang teratas saat googling.
di ruby> = 1.9 Anda dapat menggunakan
Selain yang disebutkan di jawaban lain, di ruby 1.8 Anda juga bisa menggunakan satu bentuk liner
sumber
Untuk membuat ini berfungsi di Ubuntu Linux:
Saya menginstal paket Ubuntu ruby-json:
Aku menulis naskahnya
${HOME}/rubybin/jsonDEMO
$HOME/.bashrc
termasuk:(Pada kesempatan ini saya juga mengetik di atas pada baris perintah bash.)
Kemudian berfungsi ketika saya masuk pada baris perintah:
sumber