2016-04-20 7 views
2

Ich bekomme die REST-Antwort Daten von einer URL. Ich schreibe es dann in eine JSON-Datei, aber es wird in eine Zeile in einer langen Zeichenfolge geschrieben, und ich muss es in einem lesbaren Format in der JSON-Datei haben.Ruby API - JSON Parsing - Schreiben in Datei

Mein Code ist:

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 

Es ist Druck auf die Konsole und auf einer Linie mit der JSON-Datei zu schreiben:

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

Vorschläge, wie ich das erreichen könnte?

+0

Wenn Sie den JSON im "pretty format" speichern, damit Menschen ihn bearbeiten können, sollten Sie stattdessen YAML verwenden. Es ist viel lesbarer. JSON eignet sich hervorragend für die Übertragung von Daten zwischen Apps. Durch die Formatierung zur besseren Lesbarkeit kann die Dateigröße jedoch erhöht werden, wodurch mehr CPU, mehr Netzwerkbandbreite und Anwendungszeit benötigt wird. –

+0

Benennen Sie keine Klasse "Rest". "RestResponse" wäre besser, da Klassen "Dinge" sein sollten. Anstelle von 'getData' sollten Sie' get_data' verwenden. In Ruby verwenden wir snake_case, um Variablen und Methoden zu benennen. Statt 'open' und' write' in einem Block, verwenden Sie einfach 'File.write ('file.txt', response.to_json)'. –

+0

Das hört sich nach einem guten Ratschlag an, ich bin mir nicht wirklich sicher, was ich mit JSON machen werde, um einem neuen QA-Team beizutreten, und ich habe nur xml verwendet, um die Parameter zu halten. Aber es wurde mir gesagt, dass ich mich darum kümmern sollte. – Speedychuck

Antwort

2

Verwenden Sie pretty_generate, wodurch der JSON in einem benutzerfreundlicheren Format formatiert wird.

Siehe die pretty_generate Dokumentation.

+0

Danke, das funktioniert gut wenn puts an die Konsole, aber wie füge ich dies beim Schreiben in JSON-Datei? @JLB – Speedychuck

+0

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

+0

@sammygadd Ich habe gerade das getan, ich habe vergessen, es hinzuzufügen, ich bekomme jetzt 'generate ': nur die Generierung von JSON-Objekten oder Arrays erlaubt (JSON :: GeneratorError) – Speedychuck