Невозможно получить данные JSON из API covid19india для моего приложения android, используя Volley - PullRequest
0 голосов
/ 03 мая 2020

Я хочу получить данные из этого файла: https://api.covid19india.org/state_district_wise.json

        final ProgressDialog progressDialog = new ProgressDialog(this);
        progressDialog.setMessage("Loading data...");
        progressDialog.show();
        StringRequest stringRequest = new StringRequest(Request.Method.GET,
                "https://api.covid19india.org/state_district_wise.json",
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        try {
                            JSONObject jsonObject = new JSONObject(response);
                            JSONArray jsonArray = jsonObject.getJSONArray("Jammu and Kashmir");
                            progressDialog.cancel();
                            for(int i = 0; i < jsonArray.length(); i++) {
                                JSONObject object = jsonArray.getJSONObject(i);
                                // I want get case details of "Jammu and Kashmir"
                            }
                        } catch (Exception e) {
                        }

                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                //
            }
        });
        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);

Что мне следует использовать здесь:

JSONArray jsonArray = jsonObject.getJSONArray (" Джамму и Кашмир ");

1 Ответ

0 голосов
/ 07 мая 2020

Передача данных из API - это JSONArray, а не JSONObject

   JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET, "https://api.covid19india.org/v2/state_district_wise.json",null,
            new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {
                    try {
                        for (int i = 0; i < response.length(); i++) {
                            JSONObject dataOBJ = response.getJSONObject(i);
                            JSONArray jsonChild = dataOBJ.getJSONArray("districtData");
                            for (int k = 0; k < jsonChild.length(); k++) {
                                JSONObject obj =  jsonChild.getJSONObject(k);
                                // work to be done...
                            }
                        }
                    } catch (Exception exp) {
                    }
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
        }
    });
    RequestQueue requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(request);

Код работает нормально. Прочтите это для полного решения.

...