Не могу скомпилировать код с получением значения из JsonObject - PullRequest
0 голосов
/ 17 января 2019

Я использую библиотеку 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) {
                //
            }
        });

Но я вижу ошибку: enter image description here

1 Ответ

0 голосов
/ 17 января 2019

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

Примерно так:

 try {
    JSONArray array = response.getJSONArray("results");
} catch (org.json.JSONException exception) {
    //  handle the exception
}
...