axios get请求后访问json数据

Posted

技术标签:

【中文标题】axios get请求后访问json数据【英文标题】:Accessing JSON data after Axios get request 【发布时间】:2020-06-20 16:39:54 【问题描述】:

我一直在尝试制作一个与 Shoppy API (https://shoppy.dev/) 配合使用的 Discord Bot。我对 javascript 完全陌生 - 但对编码并不陌生!

我对 Axios 进行了一些研究,并设法使用它从 Shoppy 帐户中提取订单列表。问题是,有大量数据我只想向用户显示其中的一部分。我不得不在下面的代码中编辑一些信息,但这就是我所拥有的:

        case 'orders':
            async function makeRequest() 
                const config = 
                    method: 'get',
                    url: 'https://shoppy.gg/api/v1/orders/',
                    headers: 
                        'Authorization': 'REDACTED - MY API KEY',
                        'Content-Type': 'application/json',
                        'Connection': 'keep-alive'
                    
                
                axios(config)
                    .then(response => 
                        console.log(response.data);
                    );
            

            makeRequest();
            break;

这会在控制台中产生以下输出。我在这里仅列出了一些信息,只是为了显示格式,但您大致了解:

Bot Online
[
  
    id: 'REDACTED',
    pay_id: null,
    product_id: 'REDACTED',
    coupon_id: null,
    price: 3,
    currency: 'CAD',
    exchange_rate: null,
    email: 'REDACTED',
    delivered: 1,
    confirmations: 1,
    required_confirmations: 1,

我的问题是 - 例如,我无法弄清楚如何仅从“电子邮件”中获取数据并将其显示给用户。我花了几个小时尝试不同的方式,但控制台总是只显示“未定义”。

我觉得这是一件超级简单的事情,我只是没有得到任何东西。有人有建议吗?为了给这段代码提供更多的上下文,用户正在编写“!订单”,机器人将用他们的订单列表进行响应——但我只希望机器人显示类似“订单 ID”、“产品名称”之类的内容, '电子邮件'。所以我不需要所有被拉取的数据。

谢谢!!

【问题讨论】:

您好,如果您的问题已通过以下任一答案得到解决,请考虑通过单击旁边的灰色勾号将其标记为已接受 :) 【参考方案1】:

请求返回一个数组。因此,您需要对其进行迭代以获取所有元素。您可以在响应回调中使用 for 循环或 map 函数来执行此操作。

axios(config).then(response => 
   console.log(response.data);
   //Add the for loop or the map operator here
)

使用 for 循环:

for(let x of response.data)
   //x gives you an individual item. Do whatever you want with it.
   // x.email gives you the email

使用地图操作符:

var emails = response.data.map(x => 
    return x.email;
);
//emails contains the array of all emails

您可以在 for 循环或 map 运算符中添加自己的验证以选择合适的电子邮件...

【讨论】:

这实际上非常有效,非常感谢!!!我会阅读一些地图以更好地理解,但我只是快速测试了电子邮件并且能够提取它们。

以上是关于axios get请求后访问json数据的主要内容,如果未能解决你的问题,请参考以下文章

Axios.get 返回纯 html 而不是 JSON 返回数据

vue通过axios请求本地json数据

用axios.get从静态目录加载json文件。

axios中http请求Content-Type以及post需要用qs.stringify而get请求时不用

Vue.js怎么获取页面json数据啊 求解答(get方式) 尝试后失败了 (vue.js和axios.min.js已引用)?

php get请求并处理json