【发布时间】:2020-12-11 09:15:23
【问题描述】:
我正在尝试遍历从 API 收到的 JSON 格式的哈希数组。当我在数组上调用 .each 时,它会深入到第一个元素而不是显示所有元素。数组的前两个元素如下所示:
[
{
"asset_id": "USD",
"name": "US Dollar",
"type_is_crypto": 0,
"data_start": "2010-07-17",
"data_end": "2020-08-22",
"data_quote_start": "2014-02-24T17:43:05.0000000Z",
"data_quote_end": "2020-08-22T01:06:58.9597860Z",
"data_orderbook_start": "2014-02-24T17:43:05.0000000Z",
"data_orderbook_end": "2020-08-05T14:38:00.7082850Z",
"data_trade_start": "2010-07-17T23:09:17.0000000Z",
"data_trade_end": "2020-08-22T01:19:43.1640000Z",
"data_symbols_count": 26852,
"volume_1hrs_usd": 2321607499673.51,
"volume_1day_usd": 40908494876832.76,
"volume_1mth_usd": 1714490806719560.56,
"id_icon": "0a4185f2-1a03-4a7c-b866-ba7076d8c73b"
},
{
"asset_id": "BTC",
"name": "Bitcoin",
"type_is_crypto": 1,
"data_start": "2010-07-17",
"data_end": "2020-08-22",
"data_quote_start": "2014-02-24T17:43:05.0000000Z",
"data_quote_end": "2020-08-22T01:07:19.9866602Z",
"data_orderbook_start": "2014-02-24T17:43:05.0000000Z",
"data_orderbook_end": "2020-08-05T14:38:38.3413202Z",
"data_trade_start": "2010-07-17T23:09:17.0000000Z",
"data_trade_end": "2020-08-22T01:19:41.0000000Z",
"data_symbols_count": 37490,
"volume_1hrs_usd": 2608619355599.04,
"volume_1day_usd": 1026744793672216.61,
"volume_1mth_usd": 1229382556627007157.08,
"price_usd": 11430.971377648230409771335978,
"id_icon": "4caf2b16-a017-4e26-a348-2cea69c34cba"
},
我的代码如下所示:
ticker.each do |currencies|
currencies.each do |key, value|
puts "#{key} #{value}"
end
end
我希望将“货币”中的每个元素及其每个属性作为键/值对来分配变量。但是,当我窥探这个块并检查“货币”返回的内容时,它只是第一个元素和它的 17 个哈希,而不是其他 9000 个元素。我希望这很清楚,任何帮助表示赞赏。
【问题讨论】:
-
那么ticker是你的9000种货币的数组吗?你的程序输出什么?当您说“货币”返回时,我不确定您的意思。 “货币”不是函数或方法。也许您可以发布一些具有更多上下文的代码?也许 pry session 的输出会有所帮助。
-
我只是将你的哈希值分配给一个股票变量,它工作正常。并且ticker.count 也向我显示2. 在这种情况下是预期的。您可以将其写入日志或在控制台上打印。检查您是否正确获取所有货币。
-
请提供一个较小的哈希模型,并清楚说明您的预期结果是什么。