Java在Json对象中读取Json数组

时间:2018-10-04 08:22:51

标签: java arrays json

我有一个像这样的字符串:

{"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,但是遇到了未找到的异常。

3 个答案:

答案 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(.)的东西。