【发布时间】:2017-04-03 13:45:25
【问题描述】:
想要从每个具有marketName == 'Moneyline' 的市场中提取每个marketID。尝试了.maps、.rejects 和/或.selects 的几种组合,但由于复杂的结构让我感到困惑,因此无法缩小范围。
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'
从 Moneyline 市场获取包含每个 marketId 的简单数组,无需其他信息就足够了。如果愿意,也可以使用 Rails 方法。
对不起,如果我的编辑弄乱了语法。 Here's the source。解析 JSON 后,仅使用 => 而不是 : 看起来像这样。
谢谢!
【问题讨论】:
-
而不是使用外部资源。这是在 Rails 应用程序中,所以使用 ruby 或 rails 方法
-
你有语法正确的例子吗?
-
@EricDuminil 抱歉,如果我的编辑搞砸了。见这里:betfair.com/www/sports/exchange/readonly/v1/… 在我的控制台中,它基本上看起来与解析后只有
=>而不是:完全一样。有点乱。