【发布时间】:2019-03-26 06:59:51
【问题描述】:
我的项目从 api 获取公交车票时间信息。但是如果没有服务器返回时间的数据,它不会显示运行时间。这是我通过 Volley 发送请求时的错误消息。
错误 json.JSONException:索引 1 超出范围 [0..1)
代码sn-p
private void sendRequest(final String owner, final Map<String, String> header) {
StringRequest stringRequest = new StringRequest(Request.Method.POST, MyConstants.URL + owner,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
// Log.e("AAAA" + owner, response);
try {
JSONObject object = new JSONObject(response);
if (object.getString(MyConstants.SERVICE_STATUS).equals(MyConstants.SERVICE_RESPONSE_STATUS_NOTAVAILABLE)) {
// servisten gelen cevap not_available ise
//// owner
sendVoyagesErrorBroadcast(owner, MyConstants.ERROR_NOTAVAILABLE);
} else if (object.getString(MyConstants.SERVICE_STATUS).equals(MyConstants.SERVICE_RESPONSE_STATUS_SUCCESS)) {
JSONArray result = object.getJSONArray(MyConstants.SERVICE_RESULT);
JSONArray resultGoing = result.getJSONObject(0).getJSONArray("going");
if (has_return) {
JSONArray resultReturn = result.getJSONObject(1).getJSONArray("round");
sendVoyagesArrayBroadcast(owner + MyConstants.DIRECTION_RETURN, resultReturn);
}
sendVoyagesArrayBroadcast(owner + MyConstants.DIRECTION_GOING, resultGoing);
} else if (object.getString(MyConstants.SERVICE_STATUS).equals(MyConstants.SERVICE_RESPONSE_STATUS_FAİLURE)) {
sendVoyagesErrorBroadcast(owner, MyConstants.ERROR_SERVER);
}
} catch (JSONException e) {
Log.e("search" + owner + "VoyagesErr1", e.toString());
e.printStackTrace();
}
}
【问题讨论】:
-
您能否粘贴完整的异常堆栈跟踪,以及引发异常的代码 sn-p,这可能是因为您的结果数组的大小为 1,并且您多次迭代
-
你的
JSON是什么?您想在索引1上获取对象,但数组中没有这样的元素。看到这一行:result.getJSONObject(1). -
@Ravi 这就是轨迹i.hizliresim.com/Ll59oz.jpg
-
@MichałZiober 是的,此索引中没有元素。该指数显示是否有回程巴士。但在这种情况下,有去巴士,没有回程巴士。所以它得到这个错误。
标签: java android json android-volley