【问题标题】:Differences with API's when trying to pull data尝试提取数据时与 API 的差异
【发布时间】:2018-10-03 01:51:37
【问题描述】:

我在使用 Jquery 从一个学校项目的 API 中提取一些数据时遇到了困难。

如果我使用以下 coinmaketcap API,我会收到以下响应

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

[
{
    "id": "bitcoin", 
    "name": "Bitcoin", 
    "symbol": "BTC", 
    "rank": "1", 
    "price_usd": "8854.92", 
    "price_btc": "1.0", 
    "24h_volume_usd": "6759730000.0", 
    "market_cap_usd": "150480289107", 
    "available_supply": "16993975.0", 
    "total_supply": "16993975.0", 
    "max_supply": "21000000.0", 
    "percent_change_1h": "-0.13", 
    "percent_change_24h": "0.12", 
    "percent_change_7d": "8.3", 
    "last_updated": "1524459272"
}
]

我可以使用此代码获取比特币的符号并将其放入变量中

> $.getJSON('https://api.coinmarketcap.com/v1/ticker/btc/',
> function(data){                   
>               var symbol   = (data[0].symbol)
>      })

一旦我有了它,我就可以将它放在一个 div 中。

但是,当我使用 cryptocompare API 时,我没有得到任何回报

https://min-api.cryptocompare.com/data/coin/generalinfo?fsyms=BTC,&tsym=USD

 $.getJSON('https://min-api.cryptocompare.com/data/coin/generalinfo?fsyms=BTC&tsym=USD', function(data){
                    var symbol     = (data[0].Internal)
                           });

这是响应 -

{
"Message": "Success",
"Type": 100,
"Data": [
    {
        "CoinInfo": {
            "Id": "1182",
            "Name": "BTC",
            "FullName": "Bitcoin",
            "Internal": "BTC",
            "ImageUrl": "/media/19633/btc.png",
            "Url": "/coins/btc/overview",
            "Algorithm": "SHA256",
            "ProofType": "PoW",
            "NetHashesPerSecond": 27483320229.3688,
            "BlockNumber": 518932,
            "BlockTime": 600,
            "BlockReward": 12.5,
            "Type": 1,
            "DocumentType": "Webpagecoinp"
        },
        "ConversionInfo": {
            "Conversion": "direct",
            "ConversionSymbol": "",
            "CurrencyFrom": "BTC",
            "CurrencyTo": "USD",
            "Market": "CCCAGG",
            "Supply": 16986575,
            "TotalVolume24H": 380849.0498955779,
            "SubBase": "5~",
            "SubsNeeded": [
                "5~CCCAGG~BTC~USD"
            ],
            "RAW": [
                "5~CCCAGG~BTC~USD~4~8875.23~1524460635~0.00477012~42.152119404000004~231254719~10820.885574747872~96327075.76938197~66326.58563159907~593473019.8524572~8823.46~8917.05~8804.2~8864.31~9065~8780.91~Bitfinex~7ffe9"
            ]
        }
    }
]

}

为什么第二段代码不起作用?请帮忙!

【问题讨论】:

    标签: javascript jquery api


    【解决方案1】:

    在这两种情况下,我们都以不同的形式获取数据。因此,要获取变量中的“BTC”。

    对于第一种情况 -> 符号 = data[0] ['symbol']

    对于第二种情况 -> 符号 = data['Data'][0]['CoinInfo']['Internal']

    一个是 [JSON 数组],另一个是 [具有键 'Data' 和数组值的对象]。

    【讨论】:

      【解决方案2】:

      第二个 API 返回一个对象(JSON 格式),而不是一个数组 - 看看第一个字符是如何{ 以及它如何具有键和值?您需要访问适当的属性以获取所需的值。 [0] 表示您正在尝试访问数组的第一个元素,但在这种情况下,外部对象不是数组。

      $.getJSON('https://min-api.cryptocompare.com/data/coin/generalinfo?fsyms=BTC&tsym=USD',
        function(data){
          var symbol = data.Data[0].CoinInfo.Internal;
        });
      

      【讨论】:

        猜你喜欢
        • 2021-09-18
        • 2021-02-14
        • 2019-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-29
        • 2019-09-20
        相关资源
        最近更新 更多