【问题标题】:Not able to fetch JSON data from api of covid19india for my android app using Volley无法使用 Volley 从 covid19india 的 api 为我的 android 应用程序获取 JSON 数据
【发布时间】:2020-05-03 19:14:03
【问题描述】:

我想从这个文件中获取数据: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("查谟和克什米尔");

【问题讨论】:

  • 你试过的代码在哪里?将 JSON 或其中的一部分粘贴到您的问题而不是链接中,这样会更容易查看。
  • 请先查看链接。我无法理解链接中的数据。
  • 我发布了整个代码。

标签: android json api android-studio android-volley


【解决方案1】:

来自 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.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-11
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 2017-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多