Ruby on rails Ruby API-JSON解析-写入文件

Ruby on rails Ruby API-JSON解析-写入文件,ruby-on-rails,ruby,json,api,rest,Ruby On Rails,Ruby,Json,Api,Rest,我从URL获取REST响应数据。然后我将其写入一个JSON文件,但是,它将它放在一个长字符串中的一行,并且我需要在JSON文件中以可读的格式保存它 我的代码是: require 'rubygems' require 'json' require 'rest-client' class Rest def self.getData response = RestClient.get 'http://jsonplaceholder.typicode.com/posts' re

我从URL获取REST响应数据。然后我将其写入一个JSON文件,但是,它将它放在一个长字符串中的一行,并且我需要在JSON文件中以可读的格式保存它

我的代码是:

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}]

关于如何实现这一点有什么建议吗?

使用
pretty\u generate
,这将以更人性化的格式格式化JSON


请参阅文档。

谢谢,当将其放入控制台时效果很好,但是,在写入JSON文件时,如何将其添加进来@JLBf.write(JSON.pretty_generate(response))@sammygadd我刚做了这个,我忘了添加它,现在我得到了“generate”:只允许生成JSON对象或数组(JSON::GeneratorError),更不用说刚刚解决了这个问题,非常感谢您的帮助。我想我犯了同样的错误(在响应中调用.to_JSON)@SpeedyChuck如果您以“漂亮的格式”保存JSON,以允许人类编辑它,那么您应该改用YAML。它更具可读性。在应用程序之间传输数据时,JSON非常好,但格式化数据以使其可读性确实会增加文件大小,导致文件占用更多CPU、更多网络带宽和应用程序时间。不要将类命名为“Rest”。“重新反应”会更好,因为课堂应该是“东西”。您应该使用
get\u data
,而不是
getData
。在Ruby中,我们使用snake_case来命名变量和方法。与其在块中使用
open
write
,不如简单地使用
File.write('File.txt',response.to_json)
。这听起来是一条很好的建议,我不太确定我将在刚加入新的QA团队时使用json做什么,而且我只使用xml来保存所传递的参数。但是我被告知要仔细研究一下。感谢关于类名和snake_案例的指针,我会相应地调整自己,但是,使用块分解代码不是很好吗?为了使代码保持条理化,块是很有用的,但是为了做一些非常简单的事情而浪费代码。你基本上是在写东西,所以就用这个。注意:它是在IO中定义的,但文件继承自IO,您通常会看到它是从文件中访问的。