Не могу скомпилировать код с получением значения из JsonObject

Я использую библиотеку Volley для отправки запросов API в Google Places. Ответ является объектом, подобным этому:

{
    "html_attributions": [],
    "results": [
        {
          "address":  "Wood Quay, Dublin, Ireland",
          "name":     "Christ Church Cathedral",
          "place_id": "ChIJGw9ASiYMZ0gRy9yiaCZxNZI",
        },
        { ... },
        { ... },
    ],
    "status": "OK"
}

Внутри Response.Listener Мне нужно получить доступ к массиву "результатов".
Я пытаюсь получить JSONArray с именем "results" следующим образом:

    JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, API_URL, null,
        new Response.Listener <JSONObject> () {
            @Override
            public void onResponse(JSONObject response) {

                // THE PROBLEM IS HERE - WON'T COMPILE !!!
                JSONArray array = response.getJSONArray("results");
            }
        },
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                //
            }
        });

Но я вижу ошибку:

1 ответ

Решение

Похоже на response.getJSONArray("results"); бросает JSONException, Вы должны обработать это исключение, оборачивая response.getJSONArray("results"); с блоком try-catch.

Что-то вроде этого:

 try {
    JSONArray array = response.getJSONArray("results");
} catch (org.json.JSONException exception) {
    //  handle the exception
}
Другие вопросы по тегам