首页 > 解决方案 > 为什么说这不是 json 对象?

问题描述

我是 json 解析的新手,我试图弄清楚它为什么返回 null。

这是我的 java 代码(如果您不熟悉 spigot api https://hub.spigotmc.org/javadocs/spigot/overview-summary.html

你能告诉我我做错了什么吗?我将给出代码的 gson 部分,然后我将给出其余部分。如果您不想阅读 api,可以将其视为只是在控制台中输出 json。

try {
                    URL hypixel = new URL("https://api.hypixel.net/player?key=apikey&name=" + username);
                    URLConnection urlConn = hypixel.openConnection();
                    urlConn.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2");
                    urlConn.getDoOutput();

                    try(final BufferedReader reader = new BufferedReader(new InputStreamReader(urlConn.getInputStream()))) {
                        final JsonParser parser = new JsonParser();

                        parser.parse(reader.readLine());

                        final JsonObject object = parser.parse("").getAsJsonObject();


                        String userId = object.getAsJsonObject("player").get("_id").getAsString();

                        p.sendMessage(ChatColor.GREEN + "UID: " + userId);

                }

                } catch (IOException e) {
                    p.sendMessage(ChatColor.RED + "Something went wrong!");
                }

(p.sendmessage 将是控制台中发生的事情)

以下是所有代码:

@Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {

        Player p = (Player) sender;

        if(command.getName().equalsIgnoreCase("hypixel")) {

            if(args.length == 2) {
            String username = args[0];



                try {
                    URL hypixel = new URL("https://api.hypixel.net/player?key=apikey&name=" + username);
                    URLConnection urlConn = hypixel.openConnection();
                    urlConn.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2");
                    urlConn.getDoOutput();

                    try(final BufferedReader reader = new BufferedReader(new InputStreamReader(urlConn.getInputStream()))) {
                        final JsonParser parser = new JsonParser();

                        parser.parse(reader.readLine());

                        final JsonObject object = parser.parse("").getAsJsonObject();


                        String userId = object.getAsJsonObject("player").get("_id").getAsString();

                        p.sendMessage(ChatColor.GREEN + "UID: " + userId);

                }

                } catch (IOException e) {
                    p.sendMessage(ChatColor.RED + "Something went wrong!");
                }

                }   

        }

        return false;
    }

感谢您提供任何帮助!

(哦,这是我要解析的api响应的一部分)

{"success":true,"player":{"_id":"5442f08f48b8f1e1e64a0400"}}

标签: javaapiobjectgsonminecraft

解决方案


parser.parse("").getAsJsonObject()

期望""是 JSON,但事实并非如此。


推荐阅读