我的JSON数组长度为-1。我正在使用改造和GSON实现。以下是我收到的JSON

`[{"info":"green"},[{"username":"abcd.abcd","coords":"-2.9089067,56.4395"}]]`


我设法提取了“ info”对象,但是当涉及以下数组时,由于其长度,我无法提取数据。

Call < ResponseBody > call = uploadAPIs.responderList(0);

call.enqueue(new Callback < ResponseBody > () {
    @Override
    public void onResponse(Call < ResponseBody > call, Response < ResponseBody > response) {

        String res;
        boolean error = false;

        if (!response.isSuccessful()) {
            Log.d("Responders", "code: " + response.code());
        } else {
            try {
                responders.clear();

                res = response.body().string();
                Log.d("Responders", "response " + res);

                JSONArray mJsonArray = new JSONArray(res);

                for (int i = 0; i < mJsonArray.length(); i++) {

                    if (i == 0 && mJsonArray.getJSONObject(i).has("info")) {
                        JSONObject object = mJsonArray.getJSONObject(i);
                        new Flags(getApplicationContext()).checkFlag(object.getString("info"));
                    } else {
                        JSONArray mJsonArrayItems = mJsonArray.getJSONArray(i);
                        Log.d("Responders", mJsonArrayItems.toString() + " - " + mJsonArrayItems.length());

                        for (int y = 0; i < mJsonArrayItems.length(); y++) {
                            Log.d("Responders", "inside");

                            JSONObject jsonObject = mJsonArrayItems.getJSONObject(y);
                            //String avatar = jsonObject.getString("profile_pic");
                            String username = jsonObject.getString("username");
                            //String full_name = jsonObject.getString("full_name");
                            //String department = jsonObject.getString("department");
                            String location = jsonObject.getString("coords");
                            responders.add(new ResponderObject("", username, "", "", location));
                        }
                    }
                }
            } catch (JSONException e) {
                e.printStackTrace();
                Log.d("Responders", "response " + e);
            } catch (IOException e) {
                e.printStackTrace();
                error = true;
                Log.d("Responders", "response " + e);
            }
        }

        if (!error) {
            handler.postDelayed(runnable, 3000);

            if (!responders.isEmpty()) {
                mapFragment.setResponders(responders);

                if (location_enabled) {
                    //setting polyline
                    mapFragment.setPolyline();
                }

                respondersAdapter.notifyDataSetChanged();
            }

        } else {
            handler.removeCallbacks(runnable);
        }
    }

    @Override
    public void onFailure(Call < ResponseBody > call, Throwable t) {
        handler.removeCallbacks(runnable);
    }
});


这是我收到的mJsonArrayItems日志

`[{"username":"abcd.abcd","coords":"-2.9089067,56.4395"}] - 1` <b/>

最佳答案

您在第二个循环中指定了错误的变量。尝试更换:
for(int y = 0; i < mJsonArrayItems.length(); y++)

for(int y = 0; y < mJsonArrayItems.length(); y++)

i为1,所以1 < mJsonArrayItems.length()1 < 1并且循环永远不会执行

09-10 05:55