我有一个像这样的字符串:
{"api_authentication":{"api_response":{"token":"XXXXXXXXXXXXXXXXXXXXXXXXX","firstname":"John","disabled":false,"attempts":0,"id":123,"lastname":"Malkovitch","expire":false,"status":0}}}
我可以将此字符串转换为对象:
JSONObject jobj = new JSONObject(response);
但是我没有找到如何获取令牌值的方法,我尝试创建JSONArrays,但是遇到了未找到的异常。
答案 0 :(得分:2)
您可以这样做;
final JSONObject api_authentication = jobj.getJSONObject("api_authentication");
final JSONObject api_response = api_authentication.getJSONObject("api_response");
System.out.println(api_response.getString("token"));
如果JSON
在花括号{ ... }
中有任何值,则为jsonObject
。如果值在[ ... ]
中,则为JsonArray
。您还可以获取对象或数组,并从中获取相关字段。因此,所有json元素在您的问题中都带有大括号。以JsonObject
的身份获得。
答案 1 :(得分:1)
这可能通过您发布的内容起作用。发布的代码段显示它是单个JSON对象,而不是JSONArray。 因此,请尝试以下操作:
JSONObject jobj = new JSONObject(response);
String newtoken = jobj.getJSONObject("api_authentication").getJSONObject("api_response").getString("token"); //declare the variable `newtoken` somhwere before of a desired type
答案 2 :(得分:0)
您可以尝试以下方法:
Object tokenValue = jobj.getJSONObject("api_authentication").getJSONObject("api_response").get("token");
之后,您可以将对象转换为所需的类型,或直接使用类似getString(.)
的东西。