2016-04-20 2 views
2

Я получаю данные ответа REST с URL-адреса. Затем я записываю его в файл JSON, однако он помещается в одну строку в длинной строке, и мне нужно иметь его в читаемом формате в файле JSON.Ruby API - JSON Parsing - Запись в файл

Мой код:

require 'rubygems' 
require 'json' 
require 'rest-client' 

class Rest 

    def self.getData 

    response = RestClient.get 'http://jsonplaceholder.typicode.com/posts' 
    response = JSON.parse(response) 

    File.open('/Users/robertreed/RubymineProjects/draft/posts.json', 'w') do |f| 
     f.write(response.to_json) 
    end 



    puts response 
    end 

    getData 

end 

Это печать на консоль и записи в файл JSON на одной строке:

[{"userId"=>10, "id"=>100, "title"=>"at nam consequatur ea labore ea harum", "body"=>"cupiditate quo est a modi nesciunt}] 

Любые предложения о том, как я могу добиться этого?

+0

Если вы сохраняете JSON в «симпатичном формате», чтобы позволить людям редактировать его, вы должны использовать YAML. Это гораздо более читаемо. JSON отлично подходит для передачи данных между приложениями, но форматирование его для удобства чтения может действительно увеличить размер файла, в результате чего он будет использовать больше ЦП, большую пропускную способность сети и время приложения. –

+0

Не называйте класс «Отдых». «RestResponse» будет лучше, поскольку классы должны быть «вещами». Вместо 'getData' вы должны использовать' get_data'. В Ruby мы используем snake_case для обозначения переменных и методов. Вместо 'open' и' write' в блоке просто используйте 'File.write ('file.txt', response.to_json)'. –

+0

Это звучит как хороший совет, я не совсем уверен, что я буду использовать JSON для того, чтобы просто присоединиться к новой команде QA, и я только использовал xml для хранения параметров в переданном. Но ему сказали заглянуть в него. – Speedychuck

ответ

2

Используйте pretty_generate, который отформатирует JSON в более удобном для пользователя формате.

См. Документацию pretty_generate.

+0

Спасибо, это хорошо работает, когда помещается в консоль, однако, как это можно добавить при записи в файл JSON? @JLB – Speedychuck

+0

f.write (JSON.pretty_generate (response)) – sammygadd

+0

@sammygadd Я просто сделал это, я забыл добавить его, теперь я получаю 'generate ': разрешено только создание объектов JSON или массивов (JSON :: GeneratorError) – Speedychuck