如何通过ruby导出json文件?

时间:2015-12-15 11:40:39

标签: ruby json

我想通过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"
}

2 个答案:

答案 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