我一直试图弄清楚如何在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值答案 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");