Как написать в файл JSON в правильном формате
Я создаю хэш в 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?
4 ответов:
требуют JSON библиотека, и использовать
to_json.require 'json' tempHash = { "key_a" => "val_a", "key_b" => "val_b" } File.open("public/temp.json","w") do |f| f.write(tempHash.to_json) endсвой темп.файл json теперь выглядит так:
{"key_a":"val_a","key_b":"val_b"}
форматирование
require 'json' tempHash = { "key_a" => "val_a", "key_b" => "val_b" } File.open("public/temp.json","w") do |f| f.write(JSON.pretty_generate(tempHash)) endвыход
{ "key_a":"val_a", "key_b":"val_b" }
этот вопрос для ruby 1.8, но он по-прежнему выходит на первое место при гугле.
в ruby выше 1.9 вы можете использовать
File.write("public/temp.json",tempHash.to_json)кроме того, что упоминалось в других ответах, в ruby 1.8 вы также можете использовать одну форму лайнера
File.open("public/temp.json","w"){ |f| f.write tempHash.to_json }
чтобы сделать эту работу на Ubuntu Linux:
я установил Ubuntu пакет ruby-json:
apt-get install ruby-jsonя написал сценарий в
${HOME}/rubybin/jsonDEMO
$HOME/.bashrcвходит:${HOME}/rubybin:${PATH}(в этом случае я также набрал выше в командной строке bash.)
тогда это сработало, когда я ввел в командной строке:
jsonDemo
Comments