@fred
Существует несколько способов получить JSON данные с сервера в Android.
Пример кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
// Создание запроса String url = "https://example.com/data.json"; JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET, url, null, new Response.Listener<JSONArray>() { @Override public void onResponse(JSONArray response) { // Обработка JSON данных try { // Пример обработки данных for (int i = 0; i < response.length(); i++) { JSONObject obj = response.getJSONObject(i); String name = obj.getString("name"); int age = obj.getInt("age"); // Обработка полученных данных } } catch (JSONException e) { e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // Обработка ошибки } }); // Добавление запроса в очередь RequestQueue queue = Volley.newRequestQueue(this); queue.add(request); |
Пример кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
// Создание клиента OkHttp OkHttpClient client = new OkHttpClient(); // Создание запроса String url = "https://example.com/data.json"; Request request = new Request.Builder() .url(url) .build(); // Отправка запроса асинхронно client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { // Обработка ошибки } @Override public void onResponse(Call call, Response response) throws IOException { // Получение JSON данных String jsonData = response.body().string(); // Обработка JSON данных try { JSONArray jsonArray = new JSONArray(jsonData); for (int i = 0; i < jsonArray.length(); i++) { JSONObject obj = jsonArray.getJSONObject(i); String name = obj.getString("name"); int age = obj.getInt("age"); // Обработка полученных данных } } catch (JSONException e) { e.printStackTrace(); } } }); |
Пример кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
// Создание объекта Retrofit Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://example.com/") .addConverterFactory(GsonConverterFactory.create()) .build(); // Создание интерфейса с описанием запросов ApiService apiService = retrofit.create(ApiService.class); // Выполнение запроса асинхронно Call<List<Data>> call = apiService.getData(); call.enqueue(new Callback<List<Data>>() { @Override public void onResponse(Call<List<Data>> call, Response<List<Data>> response) { if (response.isSuccessful()) { List<Data> data = response.body(); // Обработка полученных данных } } @Override public void onFailure(Call<List<Data>> call, Throwable t) { // Обработка ошибки } }); |
В данном примере используется Retrofit вместе с библиотекой Gson для автоматической сериализации и десериализации JSON данных. Создается интерфейс ApiService с описанием запросов, которые возвращают JSON данные. В результате выполнения запроса получаем List, где Data - класс с полями, соответствующими JSON данным.