我想通过ruby导出像sample.json这样的JSON文件。 (我将json.file上传到S3)
我期望以下方式,但是之前需要准备json文件。有没有办法在ruby上导出json文件?
File.open("sample.json", "w") do |f|
f.write(sample_data.to_json)
end
sample.json
{
"asset_ids": [
"this is id",
],
"contract_url": "http://hoge.com/",
"name_short": "Hoge",
"name": "HogeHoge",
"issuer": "Fuga",
"description": "",
"description_mime": "text/x-markdown; charset=UTF-8",
"type": "Currency",
"divisibility": 1,
"link_to_website": false,
"version": "1.0"
}
答案 0 :(得分:5)
这是一个简单的例子(几乎就是你在做什么):
hash = {:h => 1, :k => 2, :v => 3}
File.open("sample.json", "wb") { |file| file.puts JSON.pretty_generate(hash) }
我使用JSON.pretty_generate
代替to_json
来格式化JSON输出,否则它会将所有内容打印在一行中。
答案 1 :(得分:1)
AFAIU,有一项任务是读取包含json的文件并将其写回(可能在经过一些修改后。)
首先,上面的代码无效json,应该删除关闭方括号前的逗号。
删除逗号后,内容存储在文件sample.json
中:
▶ require 'json'
#⇒ true
▶ json = JSON.parse File.read '/tmp/a.json'
#⇒ {
# "asset_ids" => [
# [0] "this is id"
# ],
# "contract_url" => "http://hoge.com/",
# "description" => "",
# "description_mime" => "text/x-markdown; charset=UTF-8",
# "divisibility" => 1,
# "issuer" => "Fuga",
# "link_to_website" => false,
# "name" => "HogeHoge",
# "name_short" => "Hoge",
# "type" => "Currency",
# "version" => "1.0"
# }
好的,我们刚刚将内容放入ruby hash中。把它存回来:
▶ File.write 'sample.json', JSON.dump(json)
#⇒ 260
以人类可读的漂亮格式存储:
▶ File.write 'sample.json', JSON.pretty_generate(json)
#⇒ 260