首页 > 解决方案 > 在线使用json

问题描述

嘿嘿!

所以,我正在尝试制作类似https://aws.random.cat/meow的东西,但是,当将我的代码与不和谐的机器人一起使用时,它不起作用..这让我想知道你是否可以在线托管 json 东西直接使用以下代码:

document.body.innerHTML = "<pre style=\"word-wrap: break-word; white-space: pre-wrap;\">{\"file\":\"https:\\/\\/"+domain+"\\/images\\/hug\\/"+item+"\"}</pre>";

此外,我的机器人代码是:

const { MessageEmbed } = require('discord.js');
const axios = require('axios');
const {get} = require("snekfetch");

const embed = new MessageEmbed()
        .setColor("RANDOM")
        .setTitle("thingie")
        .setDescription("Loading...")
message.channel.send(embed).then(msg => {
    get('https://example.com/kiss').then(response => {
        setTimeout(function(){ 
            embed.setDescription("")
            embed.setImage(response.body.file)
            msg.edit(embed)
        }, 1500);
    });
})

我的网站运行良好,并且显示与https://aws.random.cat/meow中的完全一样但是,它仍然无法正常工作。请lmk如何或为什么会发生这种情况。

PS我没有在机器人代码中包含modules.export部分,我认为它是额外的。

PPS 以下是我当前的输出:

谢谢!

标签: javascripthtmljsondiscord.js

解决方案


如果您想在端点上提供 JSON 格式的数据,只需提供 JSON 部分,无需将其放入 HTML。如果您将 JSON 像字符串一样放入 HTML 中,那么当您这样做时,get(<your url>)您将获得带有嵌入 JSON 的整个 HTML 代码,因此response.file不起作用。

https://aws.random.cat/meow显示为嵌入 HTML 的原因是浏览器检测到它是 JSON 文件,因此它会自动进行嵌入。当您尝试wget在命令行上发出请求时,这是来自该 URL 的 RAW 响应:

$ wget https://aws.random.cat/meow --no-check-certificate
$ cat meow
{"file":"https:\/\/purr.objects-us-east-1.dream.io\/i\/935392_10151612620866211_62628372_n.jpg"}

如您所见,它周围没有 HTML。它是纯 JSON。

要验证是否确实如此,请记录您从 url 获得的响应:

get('https://example.com/kiss').then(response => {
    console.log(response.body);
});

无关:还有人欣赏这里的cat meow巧合吗?


推荐阅读