Android Studio, Firebase W/System.err: org.json.JSONException: Index 0 out of range [0..0)

Posted

技术标签:

【中文标题】Android Studio, Firebase W/System.err: org.json.JSONException: Index 0 out of range [0..0)【英文标题】: 【发布时间】:2018-10-14 03:17:48 【问题描述】:

现在我致力于跟踪校园内的公共汽车。

正如你所看到的截图。现在有两辆公共汽车。所以当点击图标总线时。它将显示距离和持续时间到达时间,但它不显示任何内容。

我从 Firebase 检索位置。

我正在使用 java、android Studio 和 Firebase。

W/System.err: org.json.JSONException: Index 0 out of range [0..0)

Image Screenshot

Image Screenshot

mDriver = mMap.addMarker(new MarkerOptions()
.position(new LatLng(location.latitude, location.longitude))
.title(rider.getEmail())
.snippet("DISTANCE : " +getDistanceInfo(currentUser,driver)+" KM ")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.bus)));

private double getDistanceInfo(Location currentUser, Location driver) 
            StringBuilder stringBuilder = new StringBuilder();


            double dist = 0.00 ;


            String latDriver = Double.toString(driver.getLatitude());


            String lngDriver = Double.toString(driver.getLongitude());



            String latCurrent = Double.toString(currentUser.getLatitude());
            String lngCurrent = Double.toString(currentUser.getLatitude());


            try 

                String url = "http://maps.googleapis.com/maps/api/directions/json?"+"&origin="+latDriver + "," + lngDriver  + "&destination=" +latCurrent + "," + lngCurrent+ "&mode=driving&sensor=false+"+"key="+getResources().getString(R.string.google_browser_key);


                HttpPost httppost = new HttpPost(url);

                HttpClient client = new DefaultHttpClient();
                HttpResponse response;
                stringBuilder = new StringBuilder();


                response = client.execute(httppost);
                HttpEntity entity = response.getEntity();
                InputStream stream = entity.getContent();
                int b;
                while ((b = stream.read()) != -1) 
                    stringBuilder.append((char) b);
                
             catch (ClientProtocolException e) 
             catch (IOException e) 
            

            JSONObject jsonObject;


            try 


                    jsonObject = new JSONObject(stringBuilder.toString());

                    JSONArray array = jsonObject.getJSONArray("routes");

                    JSONObject routes = array.getJSONObject(0);

                    JSONArray legs = routes.getJSONArray("legs");

                    JSONObject steps = legs.getJSONObject(0);

                    JSONObject distance= steps.getJSONObject("distance");

                    Log.i("Distance", distance.toString());
                    dist = Double.parseDouble(distance.getString("text").replaceAll("[^\\.0123456789]", ""));



             catch (JSONException e) 
                // TODO Auto-generated catch block
                e.printStackTrace();
            

            return (dist);
        

在 logcat 中显示错误

Image Logcat

【问题讨论】:

看起来你的路由数组是空的。你能发布你从directions api得到的回复吗? 【参考方案1】:

该错误表明您拥有的“路由”数组的长度为 0。因此数组中没有项目,并且您试图访问索引 1 处的对象,所以它会抛出一个错误,即数组为空所以那里数组中没有索引 1。

尝试将整个 JSON 正文记录到控制台并检查“路由”键中是否包含对象。

【讨论】:

以上是关于Android Studio, Firebase W/System.err: org.json.JSONException: Index 0 out of range [0..0)的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio、谷歌 Firebase、谷歌地图

尝试从 Android Studio 添加 Firebase 项目时出错

Android Studio中的Firebase android jars文档/javadoc [重复]

无法在 android studio 中设置 firebase

Android Studio和Firebase中的权限被拒绝错误[重复]

从 Android Studio 中的片段将数据写入 Firebase