无法使用Volley从covid19india的api为我的Android应用程序获取JSON数据

问题描述 投票:0回答:1

我想从该文件中获取数据: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(“ Jammu and Kashmir”);

android json api android-studio android-volley
1个回答
0
投票

来自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);

该代码现在可以正常工作。 Read this for complete sollution.

© www.soinside.com 2019 - 2024. All rights reserved.