我在使用Jquery从学校项目的API中提取一些数据时遇到了困难。
如果我使用以下coinmaketcap API,我会收到以下回复
[
{
"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"
]
}
}
]
}
为什么第二段代码不起作用?请帮忙!
答案 0 :(得分: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;
});
答案 1 :(得分:2)
在这两种情况下,我们都会以不同的形式获取数据。所以,要获得“BTC”#39;在变量中。
对于第一种情况 - > symbol = data [0] [' symbol']
对于第二种情况 - > symbol = 数据['数据'] [0] [' CoinInfo'] ['内部']
一个是[ JSON 的数组],而另一个是[对象,具有键'数据'数组值]。