GSON - JsonElement到JsonObject转换错误

时间:2016-11-29 15:00:24

标签: java json gson

Gson gson = new Gson();
JsonReader reader = new JsonReader(new InputStreamReader(
            new URL("http://api.mineplex.com/pc/player/abc?apiKey=1")
              .openConnection().getInputStream()));
JsonElement json1 = gson.fromJson(reader, JsonElement.class);
JsonObject jsonObject1 = json1.getAsJsonObject();

这个类崩溃了:

Caused by: java.lang.IllegalStateException: Not a JSON Object: "<html>"
    at com.google.gson.JsonElement.getAsJsonObject(JsonElement.java:90) ~[gson-2.2.4.jar:?]

为什么?

3 个答案:

答案 0 :(得分:1)

似乎您正在阅读HTML内容网页而不是JSON资源

检查此网址返回的内容:

http://api.mineplex.com/pc/player/abc?apiKey=1

并验证内容类型应为JSON

答案 1 :(得分:1)

这就是你的回复:

<html>
   <head></head>
   <body>
      <pre style="word-wrap: break-word; white-space: pre-wrap;">{"statusCode":401,"error":"Unauthorized","message":"Invalid API Key. To get an api key use the /api command in game"}</pre>
   </body>
</html>

除了这个页面包含一个JSON,它不是一个。您应该寻找API文档直接返回json,或者在Java中操作此HTML并仅获取JSON部分

答案 2 :(得分:1)

您使用的链接redirecting到实际页面,该页面从HTTP重定向到HTTPS协议,

问题是由Sun JRE中实施的HTTP / HTTPS重定向策略引起的。

即使浏览器足够宽容以执行此重定向,但出于安全原因,Java不会为您执行此操作。在您的情况下,您只需使用HTTPS协议即可删除任何重定向。