2016-07-09 5 views
0

I httparty und json gem bin mit auf eine Website zu gehen und einen Körper zu analysieren, die wie etwas enthält:Wie verwende ich JSON-Juwel, um ausgewählte Attribute in Ruby zu analysieren?

{"id"=>12345, "slug"=>"mac-n-cheese", "name"=>"Bacon Dude", "email"=>"[email protected]", "title"=>nil, "first_name"=>"Bacon", "last_name"=>"Dude", "facebook_id"=>nil,...} 

Der Körper eine Vielzahl von Informationen enthält, die ich nicht brauche. Ich muss nur Name, E-Mail und ID anzeigen. Mein aktueller Code:

def get_json 
    url = "https://someurl.io/api/me" 
    response = self.class.get(url, headers: { "authorization" => @auth_token }) 
    JSON.parse(response.body) 
    end 

Was muss ich auf get_json Methode hinzufügen nur id, Name und E-Mail zu holen, wenn JSON Informationen von der Website Parsen?

Antwort

1

Wenn der Text in einem JSON-Format vorliegt, bedeutet das, dass es sich um eine Zeichenfolge handelt. Sie könnten theoretisch die Zeichenfolge parsen, um zuerst den benötigten Teil des Körpers zu erhalten, und dann mit JSON.parse analysieren, um sie in einen Hash zu verwandeln. Aber ich würde dringend empfehlen es nicht zu tun, weil Sie am Ende viel teurer (und zeitraubende) Übung zu vermeiden, um eine einfache JSON.parse zu vermeiden.

Der beste Ansatz ist derjenige, den Sie bereits verwenden - analysieren Sie das ganze request.body und greifen Sie dann auf die Daten zu, die Sie benötigen.

Für was es wert ist - wenn Sie der Eigentümer (z. B. der Entwickler) des Dienstes sind, der die Daten sendet, könnten Sie die Daten auf der Senderseite abmildern.

Auch wenn dies eine Rails-Controller-Aktion ist, müssen Sie nicht request.body verwenden - stattdessen können Sie sich auf params verlassen, die bereits von Rails geparst wird und Sie einen Hash zu verwenden, z.

name = params[:name] 
email = params[:email] 
id = params[:id] 

HTH

+0

Danke für den Input! Es ist leider nicht auf Controller. Dies ist kein typisches Rails-Framework (dies ist in einem benutzerdefinierten lokalen Juwel, also hat es keine MVC-Struktur). Wie wäre es aber, den zweiten Absatz zu erklären - den gesamten "request.body" zu analysieren und auf die Daten zuzugreifen, die ich brauche - wie kann ich auf bestimmte Daten zugreifen? – Iggy

+0

Nun, Sie könnten die Zeichenfolge analysieren. Aber tu das nicht. Was ist los mit dem Parsen mit 'JSON.parse' und dem Zugriff auf die Daten mit dem Hash, den du zurückbekommst? –

Verwandte Themen