#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);