我的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
并且循环永远不会执行