如何解决从API以JSON格式遍历一系列哈希
我正在尝试遍历从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_quote_end": "2020-08-22T01:07:19.9866602Z","data_orderbook_end": "2020-08-05T14:38:38.3413202Z","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
我希望将每个元素都包含在“货币”中,并将每个属性作为键/值对来分配变量。但是,当我探查此块并检查返回的“ currencies”时,它只是第一个元素,它的17个哈希值,而不是其他9000个元素。我希望这很清楚,希望能得到您的帮助。
解决方法
认为您想要currencies.each_pair
而不是currencies.each
...
each
方法遍历ticker
数组,依次将每个条目传递给该块。仅仅因为您给currencies
赋予了复数名称,它并不会自动使其成为数组,它仍然是一个散列,每次循环都包含一种货币的17个属性。
ticker.each do |currency|
currency.each_pair { |key,value| puts "#{key}: #{value}" }
end
,
在代码上尝试.with_index
ticker.each_with_index do |currencies,index|
puts index.to_s + ': {'
currencies.each do |key,value|
puts "#{key}: #{value}"
end
puts '}'
end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。