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

时间:2016-06-17 19:26:59

标签: java json gson

我一直试图弄清楚如何在Java中做一些基本的东西..

我收到了对API的请求,该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

我做错了什么?如何获得"成功"?

的bool值

4 个答案:

答案 0 :(得分:5)

破坏你的代码的原因是你正在调用错误的方法...

待办事项

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();
    }

答案 1 :(得分:2)

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

尝试以下

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

答案 2 :(得分:1)

我只想使用root.get(" success")方法。成功并不是一个真正的json对象,它是json对象的成员。见https://google.github.io/gson/apidocs/com/google/gson/JsonObject.html#get-java.lang.String-

答案 3 :(得分:0)

如果root是jsonObject

root.getBoolean("success");