解析 JSON - 无法从 JsonObject 获取布尔值

新手上路,请多包涵

我一直在试图弄清楚如何用 Java 做一些基本的事情..

我收到了对 API 的请求,该请求返回以下 JSON。

 {"success": false, "message": "some string", "data": []}

这由以下字符串 result 表示:

 JsonObject root = new JsonParser().parse(result).getAsJsonObject();
success = root.getAsJsonObject("success").getAsBoolean();

我需要将“成功”参数作为布尔值。在调用 getAsBoolean() 时出错。

java.lang.ClassCastException: com.google.gson.JsonPrimitive 无法转换为 com.google.gson.JsonObject

我究竟做错了什么?如何获得“成功”的布尔值?

原文由 I wrestled a bear once. 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

破坏您的代码的原因是您调用了错误的方法…

success = root.get("success").getAsBoolean();

代替

success = root.getAsJsonObject("success").getAsBoolean();

例子:

 public static void main(String[] args) {
    String result = "{\"success\": false, \"message\": \"some string\", \"data\": []}";
    JsonObject root = new JsonParser().parse(result).getAsJsonObject();
    boolean success = root.get("success").getAsBoolean();
    }

原文由 ΦXocę 웃 Пepeúpa ツ 发布,翻译遵循 CC BY-SA 3.0 许可协议

您正在调用 root.getAsJsonObject("success")success 本身是一个布尔值,而不是一个对象。

尝试以下

JsonObject root = new JsonParser().parse(result).getAsJsonObject();
success = root.get("success").getAsBoolean();

原文由 ikryvorotenko 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题