如何以正确的格式写入JSON文件
我正在Ruby中创build一个哈希,并想以正确的格式将其写入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
。
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"}
格式化
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" }
为了使这个工作在Ubuntu Linux上:
-
我安装了Ubuntu软件包ruby-json:
apt-get install ruby-json
-
我在
${HOME}/rubybin/jsonDEMO
编写脚本 -
包括
$HOME/.bashrc
:${HOME}/rubybin:${PATH}
(在这种情况下,我也在bash命令行中input了上面的内容)
然后,当我进入命令行时,它工作:
jsonDemo
这个问题是为ruby1.8,但它仍然在谷歌search顶部。
在1.9以上的ruby,你可以使用
File.write("public/temp.json",tempHash.to_json)
在ruby1.8,你也可以使用一个class轮的forms
File.open("public/temp.json","w"){ |f| f.write tempHash.to_json }