2015-12-15 40 views
0

我想通过ruby导出类似sample.json的JSON文件。 (我会上传json.file到S3)如何通过ruby导出json文件?

我期待以下的方式,但是它需要准备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" 
} 
+1

什么是错的,你正在做的方式? – shivam

+0

检查此问题http://stackoverflow.com/questions/5507512/write-to-json-file-in-correct-format-ruby –

+0

亲爱的Gami 谢谢!我会检查它。 – lalala

回答

4

这里有一个简单的例子(这是相当多的,你在做什么):

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输出,否则它会在一行中打印所有内容。

+0

谢谢。让我试试吧! – lalala

+0

得到它!谢谢。 – lalala

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" 
# } 

OK,我们刚刚得到的内容转换成红宝石哈希。要保存回:

▶ File.write 'sample.json', JSON.dump(json) 
#⇒ 260 

将其存储在人类可读的格式漂亮:

▶ File.write 'sample.json', JSON.pretty_generate(json) 
#⇒ 260