Как записать файл 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?
Ответы
Ответ 1
Требовать библиотеку 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
Ваш файл temp.json теперь выглядит следующим образом:
{"key_a":"val_a","key_b":"val_b"}
Ответ 2
С форматированием
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"
}
Ответ 3
Этот вопрос относится к 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 }
Ответ 4
Чтобы сделать эту работу на Ubuntu Linux:
-
Я установил пакет Ubuntu ruby-json:
apt-get install ruby-json
-
Я написал script в ${HOME}/rubybin/jsonDEMO
-
$HOME/.bashrc
включено:
${HOME}/rubybin:${PATH}
(В этом случае я также набрал указанное выше в командной строке bash.)
Затем он работал, когда я ввел в командной строке:
jsonDemo