Как преобразовать строковый ответ в итеративный объект

#java #android #json #rest #android-volley

#java #Android #json #rest #android-volley

Вопрос:

Я пытаюсь вызвать конечную точку rest, используя Volley (HTTP library) в приложении Android / Java. Вот мой код,

  RequestQueue queue = Volley.newRequestQueue(this);
        String url ="https://covid19datasl.herokuapp.com/countries";


        StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        System.out.println(response);

                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                System.out.println("Error");
            }
        });
 

Но это дает мне строку с таким ответом,

 [{"country":"USA","countryCode":"US"},{"country":"India","countryCode":"IN"},{"country":"Brazil","countryCode":"BR"}]
 

Как мне преобразовать это String в итеративный объект?

Комментарии:

1. Вам нужен список, словарь или что?

2. Ну, это JSON — так что я бы использовал библиотеку JSON для его анализа.

3. Все, что может быть доступно, было бы хорошо.

4. Я использовал Gson . Но у меня это не работает.

Ответ №1:

Нет необходимости в каких-либо других библиотеках, кроме Volley.

Используйте Volleys JsonArrayRequest для получения JSONArray ответов.

 RequestQueue queue = Volley.newRequestQueue(this);

String url = "http://my-json-feed";

JsonArrayRequest jsonArrayRequest = new JsonArrayRequest
        (Request.Method.GET, url, null, new Response.Listener<JSONArray>() {
    @Override
    public void onResponse(JSONArray response) {
        // do something with the response
    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        // TODO: Handle error
    }
});

// Add request to queue 
queue.add(jsonArrayRequest);