2017-10-29 76 views
0

我想訪問coinmarketcap結果的Rails:訪問CoinmarketCap API

https://api.coinmarketcap.com/v1/ticker/?limit=3

這是結果。是一個哈希數組。有一種方法可以訪問每個散列而不是數字(Array [0]),因爲這些數字每天都在變化,但像Array [:id ='bitcoin']或類似的東西?

[ 
{ 
    "id": "bitcoin", 
    "name": "Bitcoin", 
    "symbol": "BTC", 
    "rank": "1", 
    "price_usd": "5751.67", 
    "price_btc": "1.0", 
    "24h_volume_usd": "1404240000.0", 
    "market_cap_usd": "95774433400.0", 
    "available_supply": "16651587.0", 
    "total_supply": "16651587.0", 
    "percent_change_1h": "0.14", 
    "percent_change_24h": "-1.5", 
    "percent_change_7d": "-4.24", 
    "last_updated": "1509240553" 
}, 
{ 
    "id": "ethereum", 
    "name": "Ethereum", 
    "symbol": "ETH", 
    "rank": "2", 
    "price_usd": "298.258", 
    "price_btc": "0.0519853", 
    "24h_volume_usd": "267318000.0", 
    "market_cap_usd": "28449497378.0", 
    "available_supply": "95385530.0", 
    "total_supply": "95385530.0", 
    "percent_change_1h": "0.58", 
    "percent_change_24h": "0.13", 
    "percent_change_7d": "-0.74", 
    "last_updated": "1509240550" 
}, 
{ 
    "id": "ripple", 
    "name": "Ripple", 
    "symbol": "XRP", 
    "rank": "3", 
    "price_usd": "0.20106", 
    "price_btc": "0.00003504", 
    "24h_volume_usd": "28961600.0", 
    "market_cap_usd": "7747151216.0", 
    "available_supply": "38531538922.0", 
    "total_supply": "99993667738.0", 
    "percent_change_1h": "-0.21", 
    "percent_change_24h": "-0.97", 
    "percent_change_7d": "-2.36", 
    "last_updated": "1509240541" 
} 
] 
+0

也許水木清華這樣https://stackoverflow.com/questions/2244915/how-do-i-search-within-an-array-of- hash-values-in-ruby –

回答

0

您可以使用自己的代碼(具體貨幣)API

端點:/股票/ {ID}/

https://api.coinmarketcap.com/v1/ticker/bitcoin/

[ 
{ 
    "id": "bitcoin", 
    "name": "Bitcoin", 
    "symbol": "BTC", 
    "rank": "1", 
    "price_usd": "573.137", 
    "price_btc": "1.0", 
    "24h_volume_usd": "72855700.0", 
    "market_cap_usd": "9080883500.0", 
    "available_supply": "15844176.0", 
    "total_supply": "15844176.0", 
    "percent_change_1h": "0.04", 
    "percent_change_24h": "-0.3", 
    "percent_change_7d": "-0.57", 
    "last_updated": "1472762067" 
} 
] 

https://api.coinmarketcap.com/v1/ticker/ethereum/

[ 
     { 
      "id": "ethereum", 
      "name": "Ethereum", 
      "symbol": "ETH", 
      "rank": "2", 
      "price_usd": "297.64", 
      "price_btc": "0.0518885", 
      "24h_volume_usd": "267038000.0", 
      "market_cap_usd": "28390640590.0", 
      "available_supply": "95385837.0", 
      "total_supply": "95385837.0", 
      "percent_change_1h": "0.36", 
      "percent_change_24h": "-0.05", 
      "percent_change_7d": "-0.95", 
      "last_updated": "1509241149" 
     } 
    ] 

來源:https://coinmarketcap.com/api/

+0

我想直接訪問一般的股票代碼 – rod

+0

我不明白你在問什麼......你想要獲得什麼樣的最終數據? – Andy

+0

我想通過一個API調用訪問所有硬幣價格。如果我想讀50個硬幣的價格,我不能做50個API調用coinmarketcap限制。 – rod

1

鑑於你的陣列:

ary = [ 
    { 
    "id": "bitcoin", 
    "name": "Bitcoin", 
    "symbol": "BTC", 
    "rank": "1", 
    "price_usd": "5751.67", 
    "price_btc": "1.0", 
    "24h_volume_usd": "1404240000.0", 
    "market_cap_usd": "95774433400.0", 
    "available_supply": "16651587.0", 
    "total_supply": "16651587.0", 
    "percent_change_1h": "0.14", 
    "percent_change_24h": "-1.5", 
    "percent_change_7d": "-4.24", 
    "last_updated": "1509240553" 
    }, 
    { 
    "id": "ethereum", 
    "name": "Ethereum", 
    "symbol": "ETH", 
    "rank": "2", 
    "price_usd": "298.258", 
    "price_btc": "0.0519853", 
    "24h_volume_usd": "267318000.0", 
    "market_cap_usd": "28449497378.0", 
    "available_supply": "95385530.0", 
    "total_supply": "95385530.0", 
    "percent_change_1h": "0.58", 
    "percent_change_24h": "0.13", 
    "percent_change_7d": "-0.74", 
    "last_updated": "1509240550" 
    }, 
    { 
    "id": "ripple", 
    "name": "Ripple", 
    "symbol": "XRP", 
    "rank": "3", 
    "price_usd": "0.20106", 
    "price_btc": "0.00003504", 
    "24h_volume_usd": "28961600.0", 
    "market_cap_usd": "7747151216.0", 
    "available_supply": "38531538922.0", 
    "total_supply": "99993667738.0", 
    "percent_change_1h": "-0.21", 
    "percent_change_24h": "-0.97", 
    "percent_change_7d": "-2.36", 
    "last_updated": "1509240541" 
    } 
] 

你可以這樣做:

ary.find{|hsh| hsh[:id] == 'bitcoin'} 

將返回Bitcoin的哈希:

=> { 
     :id=>"bitcoin", 
     :name=>"Bitcoin", 
     :symbol=>"BTC", 
     :rank=>"1", 
     :price_usd=>"5751.67", 
     :price_btc=>"1.0", 
     :"24h_volume_usd"=>"1404240000.0", 
     :market_cap_usd=>"95774433400.0", 
     :available_supply=>"16651587.0", 
     :total_supply=>"16651587.0", 
     :percent_change_1h=>"0.14", 
     :percent_change_24h=>"-1.5", 
     :percent_change_7d=>"-4.24", 
     :last_updated=>"1509240553" 
    } 

我不知道這些哈希值每天都在變化,但是如果你想根據這個值迭代它們NT在某一天,你可以這樣做:

ary.map{ |hsh| hsh[:id] }.each do |id| 
    ary.find{ |hsh| hsh[:id] == id }.tap do |hsh| 
    #do something clever with hsh 
    end 
end 
+0

不幸的結果是零:( – rod

+0

奇怪。在我的控制檯工作得很好。 – jvillian