Как написать в файл 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?

513   4  

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:

  1. я установил Ubuntu пакет ruby-json:

    apt-get install ruby-json
    
  2. я написал сценарий в ${HOME}/rubybin/jsonDEMO

  3. $HOME/.bashrc входит:

    ${HOME}/rubybin:${PATH}
    

(в этом случае я также набрал выше в командной строке bash.)

тогда это сработало, когда я ввел в командной строке:

jsonDemo

Comments

    Ничего не найдено.