【问题标题】:Can't fetch data inside JSON what I want and what's the difference between this two?无法在 JSON 中获取我想要的数据,这两者有什么区别?
【发布时间】:2022-02-16 18:54:14
【问题描述】:

我查看了许多类似的问题,但找不到。我的目的是获取硬币名称和价值。 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()

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

【问题讨论】:

  • 检查response.data是否真的是JSON,或者如果是字符串,如果是字符串,则需要将其解析为JSON,应该可以正常工作
  • 我做了,我的数据已经是 JSON 格式了。
  • 能不能写console.log(typeof coun); ?
  • 对象出现并且它在另一个工作端点中是相同的。 map 函数在第一个中起作用,但在第二个中不起作用,而两者都是一样的

标签: javascript node.js json coinmarketcap


【解决方案1】:

无法运行,因为它们的结构不同。

在第一个 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)

【讨论】:

  • 非常感谢我明白了。我很混乱。那么我怎样才能直接获得价格等特定数据呢?
  • 我刚刚添加了代码示例,你可以查看它@genzowakabayashi
  • 它有效。问候。
猜你喜欢
  • 2011-04-06
  • 1970-01-01
  • 2013-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-14
  • 1970-01-01
相关资源
最近更新 更多