首页 > 解决方案 > 在 Json 数组中调用 Json 对象但没有得到输出

问题描述

我正在使用 JSON 形式的 volley 调用 API。该 JSON 在 JSON 数组中具有 JSON 对象。我首先编写了一个调用 JSONArrayRequest 的代码,然后我运行一个循环以查找该数组中的所有对象,之后我通过 getString 获取状态名称并将其与按下的状态名称相匹配,如果它相同,则运行下一个循环以查找所有“区”名称和“活动”来自区数据。我无法获得输出,但在 ErrorResponse toast 中,我得到了包含所有 API 数据的完整数组。

如果我要更改“JSONObject 数组 = object1.getJSONObject("districtData");” "JSONArray array = object1.getJSONArray("districtData"); "我收到错误截图附在下面...

如果不更改此“JSONObject array = object1.getJSONObject("districtData");” 然后我不知道在这里写什么“JSONObject object2 = array.getJSONObject(/之后要做什么,在这里输入什么请告诉我......我是新手/);” 因为无论我在那里写什么,我都没有得到我所输入的东西的价值。

JSON的一部分

[ {“州”:“安达曼和尼科巴群岛”,“州代码”:“AN”,“districtData”:[ {“区”:“安达曼北部和中部”,“笔记”:“”,“活动”:0 ,“确认”:1,“死亡”:0,“恢复”:1,“三角洲”:{“确认”:0,“死亡”:0,“恢复”:0 } },{“区”:“南安达曼”,“笔记”:“”,“活跃”:10,“确认”:20,“已故”:0,“恢复”:10,“三角洲”:{“确认”:4,“已故”:0,“恢复”:0 } },{“区”:“未知”,“笔记”:“”,“活动”:1,“确认”:1,“已故”:0,“恢复“:0,“三角洲”:{“确认”:0,“已故”:0,“恢复”:0}}]}]0,“已故”:0,“恢复”:0 } } ] } ]0,“已故”:0,“恢复”:0 } } ] } ]

private void getData2(){
    final ProgressDialog progressDialog = new ProgressDialog(this);
    final String clickedState = getIntent().getStringExtra("stateName");
    progressDialog.setMessage("Loading...");
    progressDialog.show();
    String url = "https://api.covid19india.org/v2/state_district_wise.json";
    StringRequest request = new StringRequest(Request.Method.GET, url,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    progressDialog.dismiss();
                    try {
                        JSONObject object = new JSONObject(response);
                        assert clickedState != null;
                        JSONObject object1 = object.getJSONObject(clickedState);
                        JSONObject array = object1.getJSONObject("districtData");
                        for (int i = 0; i<array.length();i++){
                            JSONObject object2 = array.getJSONObject(/*What To do after that, what to enter here pls tel me... I m new to this*/);
                            String s1 = object2.getString("district");
                            String s2 = object2.getString("active");
                            StateList item = new StateList(s1,s2);
                            mData2.add(item);
                            initRecyclerView();
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                        Toast.makeText(getApplicationContext(),e.getMessage(),Toast.LENGTH_SHORT).show();
                    }
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Toast.makeText(getApplicationContext(),error.getMessage(),Toast.LENGTH_SHORT).show();
        }
    });
    Volley.newRequestQueue(this).add(request);
}
private void initRecyclerView(){
    Log.d(TAG, "initRecyclerView: initRecyclerView");
    RecyclerView recyclerView = findViewById(R.id.districtsDetailedRecycler);
    StateDistrictsAdapter adapter2 = new StateDistrictsAdapter(mData2,this);
    recyclerView.setAdapter(adapter2);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
}

}

错误截图

标签: androidarraysjsonandroid-studioobject

解决方案


推荐阅读