2015-12-15 7 views
0

Я хотел бы экспортировать файл JSON, например sample.json by ruby. (Я загружу json.file на S3)Как экспортировать json-файл рубином?

Я ожидаю следующий способ, однако он должен подготовить файл json раньше. Есть ли способ экспортировать json-файл на ruby?

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

ОК, мы только что получили содержание в рубиновой хэш. Для того, чтобы сохранить его обратно:

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

Чтобы сохранить его в читаемом формате симпатичного человека:

▶ File.write 'sample.json', JSON.pretty_generate(json) 
#⇒ 260 
Смежные вопросы