Yön zamanlarını almak için google maps API'yi kullanmaya çalışıyorum. Bir url oluşturmayı, JSON yanıtını almayı ve ardından bu yanıtı seyahat süresi için incelemeyi umuyorum. JSON nesnesini oluşturduktan sonra, gezinirken sorun yaşıyorum. Bana göre bu, yanıtı almamı ya da JSON nesnesinde dolaştığımı gösteriyor. Web'in etrafındaki eğiticilerden bir araya getirdiğim kodlara ve parça parçalarına göz atabilirseniz çok memnun olurum.Android App içinde Google Maps API ayrıştırma JSON
Bu kod yanıtı almak için tasarlanmıştır. Bir try/catch ile çevrilidir ve herhangi bir hatayı tetiklememiştir. Benzer bir soru için this stackoverflow answer esinlenerek olarak
String stringUrl = <URL GOES HERE>;
URL url = new URL(stringUrl);
HttpURLConnection httpconn = (HttpURLConnection)url.openConnection();
if (httpconn.getResponseCode() == HttpURLConnection.HTTP_OK)
{
BufferedReader input = new BufferedReader(new InputStreamReader(httpconn.getInputStream()),8192);
String strLine = null;
while ((strLine = input.readLine()) != null)
{
response.append(strLine);
}
input.close();
}
String jsonOutput = response.toString();
bu kod, süresini bu çıktıyı alıp nihai dizeye ayrıştırmak için tasarlanmıştır.
JSONObject jsonObject = new JSONObject(jsonOutput);
JSONObject routeObject = jsonObject.getJSONObject("routes");
JSONObject legsObject = routeObject.getJSONObject("legs");
JSONObject durationObject = legsObject.getJSONObject("duration");
String duration = durationObject.getString("text");
İkinci bloğun ikinci satırında bir JSON istisnası alıyorum. Bunu düzeltmek için herkes yardımcı olabilir mi? Ya da aynı verileri elde etmenin daha basit bir yolunu önerebilir misiniz?
DÜZENLEME:
JSONObject jsonObject = new JSONObject(responseText);
JSONArray routeObject = jsonObject.getJSONArray("routes");
JSONArray legsObject = routeObject.getJSONArray(2); ***error***
JSONObject durationObject = legsObject.getJSONObject(1);
String duration = durationObject.getString("text");
Ama yine de JSON istisna atıyor, ancak şimdi üçüncü satırdan sonra açıklanmıştır: Burada (aromero itibaren) ilk yardımcı yanıt sayesinde, ikincisi yarısı şimdi benziyor . Emin olmak için utanç verici bir şekilde kolay olduğundan eminim, ama bazı yardımları gerçekten takdir ediyorum.
bir örnek JSON dosyasına ilgili kısmı, aşağıda gösterilmiştir:
{
"routes" : [
{
"bounds" : {
"northeast" : {
"lat" : 34.092810,
"lng" : -118.328860
},
"southwest" : {
"lat" : 33.995590,
"lng" : -118.446040
}
},
"copyrights" : "Map data ©2011 Google",
"legs" : [
{
"distance" : {
"text" : "12.9 mi",
"value" : 20807
},
"duration" : {
"text" : "27 mins",
"value" : 1619
},
Sana yanlış yapıyorum tespit ettik düşünüyorum. Hala özellikleri dışarı ütüleme. Birisi beni dövmedikçe, tamir ettiğimde geri göndereceğim. – user714403
Rotalar bir dizidir, google'un olası rotaların bir listesini döndürdüğünü varsayalım. Yani onlardan birini almalısın ya da hepsinde bir şey yapmalısın. Ne yapmaya çalışıyorsun? – aromero
Harika! Orijinal cevabınıza yaptığınız değişiklik için teşekkür ederim, el ele tutuşmasını gerçekten takdir ediyorum. JSON'un sözdizimini/aralığını gerçekten anlamadım ve onu çok net bir şekilde ortaya koydun. Çok teşekkürler! – user714403