从android中的json响应中检索数组内部的特定值

时间:2017-06-11 13:50:33

标签: android arrays json

我需要在id数组中获取student的值。我得到的回应是,

{
  "response": {
      "student": [
        {
           "id": "125745",
           "module": 3,
           "status": 1
        }
      ]
   }
}

我尝试使用以下代码,

        String userId = null;
        try {
            JSONObject object = (JSONObject) new JSONTokener(response).nextValue();

            userId= object.getString("id");

        } catch (JSONException e) {
            e.printStackTrace();
        }

但它不起作用。如何检索id

4 个答案:

答案 0 :(得分:1)

你几乎就在那里,只需要这样做:

JSONArray students = object.getJSONArray("student");
JSONObject student = students.getJSONObject(0);
userId= student.getString("id");

因为id值放在JSONObject中,所以在索引0的JSONArray中,它再次放在JSONObject中。

另外,不要忘记处理异常,上面的代码仅供您理解。

希望有所帮助!!

答案 1 :(得分:0)

您的值放在json数组中。因此,您需要使用response检索getJSONObject对象,然后通过student获取getJSONArray json数组。然后,您将能够遍历student个对象。没有办法神奇地从json获取id。 或者,您可以使用Gson将json映射到Java对象。

答案 2 :(得分:0)

试试这个:

让所有的json都被称为

String serverResponse = "Response from the server";
try {
    JSONObject object = new JSONObject(serverResponse);
    String userId = object.getJSONObject("response").getJSONArray("student").getJSONObject(0).getString("id");
    }
catch (JSONException e) {
    e.printStackTrace();
}

希望这有帮助。

答案 3 :(得分:0)

假设jsonObject是对你的根json的引用,你可以得到第一个学生的id:

JSONObject response = (JSONObject) jsonObject.get("response");
JSONArray students = (JSONArray) response.get("student");
int id = (int) ((JSONObject)students.get(0)).get("id");