You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

校园公交追踪功能异常:点击图标无数据及JSON索引越界报错

校园公交追踪功能JSON越界问题排查与修复方案

嘿,我看你在开发校园公交追踪功能时遇到了点击公交图标无内容、还抛出org.json.JSONException: Index 0 out of range [0..0)的问题,结合你用Java+Android Studio+Firebase的技术栈,这个问题大概率是JSON数组解析时访问了空数组的索引导致的,下面给你一步步拆解排查和修复思路:

问题根源分析

这个报错的核心意思是:你试图访问一个长度为0的数组的第0个元素,而数组里根本没有元素。结合你的场景,大概率是这两个环节出了问题:

  • 从Firebase获取的公交位置数据里,对应存储位置的JSON数组是空的;
  • 你在解析数据时没做边界判断,直接去取索引0的元素,导致解析失败,进而让点击图标展示距离/时长的逻辑无法执行。

具体修复步骤

1. 先确认Firebase返回的数据是否正常

先在代码里加日志,把从Firebase拿到的原始数据打印出来,看看是不是真的为空或者结构不符合预期:

// 假设你从Firebase获取到的是字符串格式的JSON
String firebaseLocationData = ...; // 你的数据获取代码
Log.d("BusLocationDebug", "Firebase返回的原始数据: " + firebaseLocationData);

然后打开Android Studio的Logcat,搜索BusLocationDebug,查看返回的JSON结构:

  • 如果数组确实是空的,那要先检查Firebase控制台里的公交位置节点,确认位置数据是否已经正确上传;
  • 如果结构和你预期的不一样(比如不是数组而是单个对象),那就要调整解析逻辑。

2. 给JSON解析加边界判断

在你解析JSON数组的代码里,一定要先判断数组长度大于0,再去访问索引元素,示例代码如下:

try {
    JSONArray locationArray = new JSONArray(firebaseLocationData);
    // 先判断数组是否有内容
    if (locationArray.length() > 0) {
        JSONObject locationObj = locationArray.getJSONObject(0);
        double lat = locationObj.getDouble("latitude");
        double lng = locationObj.getDouble("longitude");
        // 后续计算距离、预计时长的逻辑
    } else {
        Log.e("BusLocationError", "当前公交暂无位置数据");
        // 这里可以给用户提示,比如在InfoWindow里显示"暂无位置信息"
    }
} catch (JSONException e) {
    e.printStackTrace();
    Log.e("BusLocationError", "解析位置数据失败: " + e.getMessage());
}

3. 优化公交Marker的点击逻辑

结合你贴的Marker代码片段,建议给每个公交Marker绑定唯一标识(比如公交ID),这样点击时能精准获取对应公交的位置数据,避免混同:

// 添加Marker时绑定公交ID
Marker driverMarker = mMap.addMarker(new MarkerOptions()
        .position(new LatLng(location.latitude, location.longitude))
        .title("公交" + rid));
driverMarker.setTag(rid); // 把公交ID存到Marker的Tag里

// 点击Marker时取出Tag,查询对应公交的位置
mMap.setOnMarkerClickListener(marker -> {
    String busId = (String) marker.getTag();
    // 根据busId去Firebase查询对应公交的位置数据,再解析展示
    return false;
});

这样能避免因为某一辆公交的位置数据为空,导致所有公交的点击逻辑都失效的问题。

内容的提问来源于stack exchange,提问作者fahminazirul20

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:50:53