想要從每個有marketName == 'Moneyline'
的市場中提取每個marketID
。嘗試了幾種組合.map
s,.reject
s和/或.select
s,但無法縮小它,因爲複雜的結構令我感到困惑。Ruby:根據標準從深度嵌套的JSON結構中提取元素
events
中有很多markets
,還有很多events
。該結構的樣品(試圖編輯爲簡潔起見):
{"currencyCode"=>"GBP",
"eventTypes"=>[
{"eventTypeId"=>6423,
"eventNodes"=>[
{"eventId"=>28017227,
"event"=>
{"eventName"=>"Philadelphia @ Seattle"
},
"marketNodes"=>[
{"marketId"=>"1.128274650",
"description"=>
{"marketName"=>"Moneyline"}
},
{"marketId"=>"1.128274625",
"description"=>
{"marketName"=>"Winning Margin"}
}}}]},
{"eventId"=>28018251,
"event"=>
{"eventName"=>"Arkansas @ Mississippi State"
},
"marketNodes"=>[
{"marketId"=>"1.128299882",
"description"=>
{"marketName"=>"Under/Over 60.5pts"}
},
{"marketId"=>"1.128299881",
"description"=>
{"marketName"=>"Moneyline"}
}}}]},
{"eventId"=> etc....
嘗試各種東西,例如,
markets = json["eventTypes"].first["eventNodes"].map {|e| e["marketNodes"].map { |e| e["marketId"] } if (e["marketNodes"].map {|e| e["marketName"] == 'Moneyline'})}
markets.flatten
# => yields every marketId not every marketId with marketName of 'Moneyline'
獲得一個簡單的數組每marketId從Moneyline市場,沒有其他信息就足夠了。如果喜歡,使用Rails方法也可以。
對不起,如果我的編輯搞砸了語法。 Here's the source。在解析JSON之後,它看起來像=>
而不是:
。
謝謝!
寧可不使用外部資源。這是在一個Rails應用程序,所以無論是紅寶石或鐵軌方法 – iamse7en
你有一個正確的語法的例子嗎? –
@EricDuminil對不起,如果我的編輯搞砸了。看到這裏:https://www.betfair.com/www/sports/exchange/readonly/v1/allmarkets?eventTypeIds=6423&types=MARKET_DESCRIPTION,EVENT&alt=json在我的控制檯,它基本上看起來像只有'=>'解析後代替':'。這有點凌亂。 – iamse7en