2016-07-20 17 views
-1

ich durch JSON iterieren versuche und ich halte fallen Foul von dem folgenden Fehler:Rubin iterieren JSON-Antwort und Rückgabewerte

no implicit conversion of String into Integer (TypeError) 

Was ich tun möchte, ist durch meine Antwort wiederholen und basiert meine Regeln zurückkehren ein Datensegment. Meine Antwort lautet wie folgt:

data = JSON.parse(response) 

data = (whats below) 

{ 
     “summary”: { 
      “Id”: 5452, 
      “IdOutcome”: "Scored", 
      “Results”: [ 
      { 
       “test”: "car", 
       “value”: 10.0, 
       “num”: 0 
      }, 
      { 
       “test”: "carz", 
       “value”: 0.0, 
       “num”: 0 
      }, 
      { 
       “test”: "bars", 
       “value”: 10.0, 
       “num”: 1 
      } 
      ] 
     } 
     } 

So im Beispiel Reaktion I oben durch „Ergebnisse“ zu durchlaufen will und zurück entweder „Test“ oder Heck sogar alle des Blockes für den höchsten Wert num. So im Beispiel unten Ich würde

"bars", 
10.0, 
1 

oder nur

"bars" 

SO im Wesentlichen zurückgeführt werden brauche ich nur durch die zurückgegebene Array Daten iterieren.

+0

Wir möchten Ihre Bemühungen auf die Lösung, das sehen. Ohne das sieht es so aus, als hättest du nichts geschrieben und willst, dass wir es tun, was für SO unpassend ist. Bitte lesen Sie "[fragen]" und die verlinkten Seiten. –

Antwort

0

Sie wollen Enumerable#max_by verwenden:

max_result = data["summary"]["Results"].max_by {|r| r["num"] } 
# => { "test" => "bars", 
#  "value" => 10.0, 
#  "num" => 1 
# } 

max_result["test"] 
# => "bars" 
0

Der Wert 54a52 ist nicht gültig. Sie müssen es wahrscheinlich in den Notierungen "54a52" einkapseln. Wenn Sie das ändern, wird die Zeichenfolge korrekt analysiert.

JSON.parse('{"summary":{"Id":"54a52","IdOutcome":"Scored","Results":[{"test":"car","value":10.0,"num":0},{"test":"carz","value":0.0,"num":0},{"test":"bars","value":10.0,"num":1}]}}') 
=> {"summary"=>{"Id"=>"54a52", "IdOutcome"=>"Scored", "Results"=>[{"test"=>"car", "value"=>10.0, "num"=>0}, {"test"=>"carz", "value"=>0.0, "num"=>0}, {"test"=>"bars", "value"=>10.0, "num"=>1}]}} 
+0

Entschuldigung, das war mein Fehler, als ich die Antwortdaten manipulierte. Ich kann erfolgreich analysieren, aber was ich jetzt tun möchte, ist jetzt, bestimmte Werte aus der analysierten Antwort herauszuziehen –