我在Ruby中创建一个哈希,并希望以正确的格式将其写入JSON文件.
这是我的代码:
tempHash = {
"key_a" => "val_a",
"key_b" => "val_b"
}
fJson = File.open("public/temp.json","w")
fJson.write(tempHash)
fJson.close
Run Code Online (Sandbox Code Playgroud)
以下是生成的文件的内容:
key_aval_akey_bval_b
Run Code Online (Sandbox Code Playgroud)
我正在使用Sinatra(不知道是什么版本)和Ruby v 1.8.7.
如何以正确的JSON格式将其写入文件?
Mik*_*wis 163
需要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
Run Code Online (Sandbox Code Playgroud)
您的temp.json文件现在看起来像:
{"key_a":"val_a","key_b":"val_b"}
Run Code Online (Sandbox Code Playgroud)
And*_*s B 81
格式化
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
Run Code Online (Sandbox Code Playgroud)
产量
{
"key_a":"val_a",
"key_b":"val_b"
}
Run Code Online (Sandbox Code Playgroud)
这个问题适用于ruby 1.8,但在google搜索时仍然排在首位.
在1.9以上的红宝石中你可以使用
File.write("public/temp.json",tempHash.to_json)
Run Code Online (Sandbox Code Playgroud)
除了在其他答案中提到的,在ruby 1.8中你也可以使用一种衬垫形式
File.open("public/temp.json","w"){ |f| f.write tempHash.to_json }
Run Code Online (Sandbox Code Playgroud)