2016-04-20 74 views
2

我从URL获取REST响应数据。然后我将它写入JSON文件,然而,它将它放在一个长字符串中,我需要在JSON文件中以可读格式存储它。Ruby API - 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}] 

我如何能做到这一点有什么建议?

+0

如果您将JSON保存为“漂亮的格式”,为了让人们编辑它,您应该改用YAML。它更可读。在应用程序之间传输数据时,JSON非常棒,但为了便于阅读,将其格式化可以真正增加文件大小,使其使用更多的CPU,更多的网络带宽和应用程序时间。 –

+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