Я создаю хеш в Ruby и хочу записать его в файл JSON в правильном формате.
Вот мой код:
tempHash = {
"key_a" => "val_a",
"key_b" => "val_b"
}
fJson = File.open("public/temp.json","w")
fJson.write(tempHash)
fJson.close
А вот содержимое получившегося файла:
key_aval_akey_bval_b
Я использую Sinatra (не знаю, какую версию) и Ruby v 1.8.7.
Как я могу записать это в файл в правильном формате JSON?
Ответы:
Требовать библиотеку JSON и использовать
to_json
.Ваш файл temp.json теперь выглядит так:
источник
File.open(...){ |f| f << h.to_json }
JSON.pretty_generate(tempHash)
также rad ruby-doc.org/stdlib-1.9.3/libdoc/json/rdoc/…С форматированием
Вывод
источник
pretty_generate
, если только потребителем вывода не является человек. Даже тогда лучше сгенерировать JSONlines и использовать что-то вродеjq
просмотра вывода.Этот вопрос касается Ruby 1.8, но он по-прежнему остается на первом месте при поиске в Google.
в ruby> = 1.9 вы можете использовать
кроме того, что упоминалось в других ответах, в ruby 1.8 вы также можете использовать одну форму вкладыша
источник
Чтобы это работало в Ubuntu Linux:
Я установил пакет Ubuntu ruby-json:
Я написал сценарий на
${HOME}/rubybin/jsonDEMO
$HOME/.bashrc
включены:(В этом случае я также набрал вышеуказанное в командной строке bash.)
Затем это сработало, когда я ввел в командную строку:
источник