尝试将来自 API 的 JSON 数据显示为数组

Posted

技术标签:

【中文标题】尝试将来自 API 的 JSON 数据显示为数组【英文标题】:Trying to display JSON data from API as an array 【发布时间】:2020-07-03 14:22:06 【问题描述】:

所以我一直在尝试在 Node.js 中制作 Discord Bot,我从外部 api 获取数据并使用 BOT 来显示数据,问题是当我调用该函数时,它会一一显示一条消息中的所有内容。 我想在一条消息中显示所有内容。

const token = 'my discord token is here';
const Discord = require('discord.js');
const axios = require('axios');
const client = new Discord.Client();


client.on('ready', () => 
    console.log(`Logged in as $client.user.tag!`)
)
client.on('message', async msg => 
    if (msg.content === '!inventario') 
      let getInv =  async () => 
          let response = await axios.get('my api link where im getting the info is here')
          let inventario = response.data
          return inventario
      
      let inventarioValue = await getInv ()
      var inv = inventarioValue.total_inventory_count
      msg.channel.send(`Total de Itens no inventário: $inventarioValue.total_inventory_count \nSkins:\n`);
       for (var i=0;i<inv;i++)


    var itens = inventarioValue.descriptions[i].market_name
    msg.channel.send(itens);

    
  );
client.login(token);

我想执行这个 inventarioValue.descriptions[i].market_name,然后在执行后显示完整结果而不是一一显示。

谢谢

【问题讨论】:

【参考方案1】:

您可以映射对象数组元素并添加到消息中。为了获得更好的视觉反射,您可以将它们添加到嵌入中。

const token = 'my discord token is here';
const Discord = require('discord.js');
const axios = require('axios');
const client = new Discord.Client();
client.on('ready', () => 
    console.log(`Logged in as $client.user.tag!`)
)
client.on('message', async msg => 
    if (msg.content === '!inventario') 
        let getInv = async () => 
            let response = await axios.get('my api link where im getting the info is here')
            let inventario = response.data
            return inventario
        
        let inventarioValue = await getInv()
        var inv = inventarioValue.total_inventory_count
        let embed = new Discord.MessageEmbed()
        embed.setDescription(`$inventarioValue.descriptions.map(val => val.market_name).join('\n')`)
        msg.channel.send(`Total de Itens no inventário: $inventarioValue.total_inventory_count \nSkins:\n`, embed);
    
);
client.login(token);

【讨论】:

以上是关于尝试将来自 API 的 JSON 数据显示为数组的主要内容,如果未能解决你的问题,请参考以下文章

将 JSON 数据从 API 转换为数组并在 Laravel 和 Guzzle HTTP Client 中分别显示?

如何在 SwiftUI 中显示来自 API 的 JSON 数据?

将来自 json 的传入数据转换为二维数组

UIPicker 视图不显示来自 JSON 数组的数据

在 Ruby 中解析来自 Eventbrite API 的 JSON 响应

将 JSON 解析为 Dart 中的列表