无法在 JSON 内获取我想要的数据,这两者有什么区别?

Can't fetch data inside JSON what I want and what's the difference between this two?

我看过很多类似的问题,但找不到。我的目的是获取硬币名称和价值。 Coinmarketcap API 中有 2 个端点。第一个在评论行中给出了我想要的输出并且它有效,但我需要第二个但不起作用。两者具有相似的 JSON 结构。

第一个端点的输出像这样 JSON https://pastebin.com/xSS85Sbd

name: 'Bitcoin', price: 43973.31953486187,
name: 'Ethereum', price: 3097.8947589293316

我在 2 日遇到了一些错误 JSON https://pastebin.com/0sDXXwxm

coin.data.map is not a function
Cannot read properties of undefined (reading 'name')

我在下面尝试了很多 console.log 有地图和没有地图的品种,但都没有成功。

coin.map(a => ({ name: a.name, price: a.quote.USD.price}))
coin.data.map(a => ({ name: a.name, price: a.quote.USD.price}))
async function getCoin(){
  try {
    //const response = await axios.get('https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest?limit=2', {
    const response = await axios.get('https://pro-api.coinmarketcap.com/v2/cryptocurrency/quotes/latest?symbol=BTC,ETH', {
      headers: {
        'X-CMC_PRO_API_KEY': 'key',
      },
    });

    const coin = response.data;
    const result = coin.data.map(a => ({ name: a.name } ))

    console.log(result);

    //return coin;

    } catch(ex) {
    console.log(ex);
    throw ex;
  }
}
getCoin()

我真的很想知道我哪里错了。非常感谢。

不能运行因为它们的结构不同

第一个 JSON dataarray 所以你可以使用 map

{
...
"data":[{"id":1,"...
...
}

第二个 dataobject 所以它会抛出错误 coin.data.map is not a function

{
...
"data":{"BTC"...
...
}

更新

你可以这样获取硬币信息

const result = Object.keys(coin.data).map(coinName => {
  const coinInfo = coin.data[coinName][0]
  return {
    name: coinInfo.name,
    price: coinInfo.quote.USD.price
  }
})
console.log('result: ', result)