Я пытаюсь использовать API карт Google для получения времени направления. Я надеюсь создать URL-адрес, получить ответ JSON, а затем изучить этот ответ на предмет длительности поездки. После создания объекта JSON у меня возникают проблемы при навигации по нему. Для меня это означает, что я либо испортил получение ответа, либо перемещался по объекту JSON. Я был бы признателен, если бы вы могли взглянуть на фрагменты кода, которые я собрал из учебных пособий в Интернете.
Этот код предназначен для получения ответа. Он окружен попыткой / уловом и не вызывает никаких ошибок.
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();
Этот код предназначен для того, чтобы взять эти выходные данные и проанализировать их в итоговую строку, длительность, как вдохновлено этим ответом stackoverflow для аналогичного вопроса.
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");
Я ловлю исключение JSON во второй строке второго блока. Кто-нибудь может помочь исправить это? Или, возможно, предложить более простой способ получить те же данные?
РЕДАКТИРОВАТЬ: благодаря первому полезному ответу (от aromero) вторая половина теперь выглядит следующим образом:
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");
Но он по-прежнему вызывает исключение JSON, только теперь это после третьей строки. Я уверен, что это легко исправить, но я был бы очень признателен за помощь.
Соответствующая часть примера файла JSON показана ниже:
{
"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
},