从 json 响应中获取图像

Get Image out of a json response

我正在制作一个与 last.fm API 通信的 discord.js 机器人。我希望我的机器人在嵌入中显示来自请求的图像,但它只会给我不同的结果 sizes.Everything 否则工作得很好我只需要图像方面的帮助。非常感谢你的帮助:)

axios
  .get(request_url)
  .then(res => {
    if (res.data.message) {
      message.channel.send('User not found')
      return
    }

    const latest_track = res.data.recenttracks.track[0]

    if (!latest_track) {
      e.message.channel.send('User not found')
      return
    }

    const {
      name,
      artist: { '#text': artist },
      album: {'#text': album},
      image: {'size': large, '#text' : image},
    } = latest_track

   
    
    


    const embed = new MessageEmbed()

      .setColor('#0099ff')
      .setTitle(`now playing- ${fmname}`)
      .setDescription(` **${name} - ${artist}** on ${album}`)
      .setImage(image)

    message.channel.send(embed)

这是json响应

 {
      artist: { mbid: '', '#text': 'Tyler, The Creator' },
      '@attr': { nowplaying: 'true' },
      mbid: '',
      album: { mbid: '', '#text': 'CALL ME IF YOU GET LOST' },
      streamable: '0',
      url: 'https://www.last.fm/music/Tyler,+The+Creator/_/SWEET+%2F+I+THOUGHT+YOU+WANTED+TO+DANCE+(feat.+Brent+Faiyaz+&+Fana+Hues)',
      name: 'SWEET / I THOUGHT YOU WANTED TO DANCE (feat. Brent Faiyaz & Fana Hues)',
      image: [
        {
          size: 'small',
          '#text': 'https://lastfm.freetls.fastly.net/i/u/34s/8bed6cc4a2f68d3bb2228fbe6654b887.gif'
        },
        {
          size: 'medium',
          '#text': 'https://lastfm.freetls.fastly.net/i/u/64s/8bed6cc4a2f68d3bb2228fbe6654b887.gif'
        },
        {
          size: 'large',
          '#text': 'https://lastfm.freetls.fastly.net/i/u/174s/8bed6cc4a2f68d3bb2228fbe6654b887.gif'
        },
        {
          size: 'extralarge',
          '#text': 'https://lastfm.freetls.fastly.net/i/u/300x300/8bed6cc4a2f68d3bb2228fbe6654b887.gif'
        }
      ]
    }

在 JSON 响应中,您会注意到您获得了 Array 张图片。对于数组中的每个 JSON 个对象,都有一个大小和一个图像 URL。如果你想访问图像的“小”版本,你会要求数组中的第一个元素。计算机从 0 开始,而不是从 1 开始,因此您可以执行以下操作:

// Replace <JSON> with whatever variable represents your JSON
.setImage(<JSON>.image[0]['#text'])

如果您想要中号,只需将 0 替换为 1。要了解有关数组的更多信息,请查看 Array article written by Mozilla

感谢 @Elitezen,因为他们在评论中指出了这一点