2016-07-20 83 views
-1

我試圖通過JSON迭代和我保持以下錯誤落下犯規:紅寶石通過JSON響應迭代和返回值

no implicit conversion of String into Integer (TypeError) 

我想要做的就是通過我的迴應迭代和基於我的規則返回一段數據。我的回答如下:

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

在例子中響應上面我想通過「結果」進行迭代,並返回要麼「測試」或赫克甚至所有塊的最高值NUM。因此,在下面的例子中我將返回

"bars", 
10.0, 
1 

或只是

"bars" 

所以基本上我只需要通過返回數組數據進行迭代。

+0

我們希望看到你的努力,朝着解決這個。沒有它,看起來你沒有寫任何東西,並希望我們這樣做,這是脫離SO的主題。請閱讀「[問]」和鏈接的頁面。 –

回答

0

你想用Enumerable#max_by

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

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

54a52無效。您可能需要將其封裝在報價"54a52"中。如果你改變它,它會正確解析字符串。

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

道歉,這是我欺騙響應數據時的錯誤。我可以成功解析,但是我想要做的是現在從解析的響應中提取特定值 –