Анализ данных из API Google Directions с использованием GSONAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Анализ данных из API Google Directions с использованием GSON

Сообщение Anonymous »

Мой ответ API таков:

Код: Выделить всё

{
"geocoded_waypoints": [],
"routes": [
{
"bounds": {},
"copyrights": "Map data ©2024",
"legs": [
{
"distance": {
"text": "22.7 km",
"value": 22733
},
"duration": {
"text": "56 mins",
"value": 3358
},
"end_address": "B-14, opp. Defence Colony, near Lajpat Nagar Metro Station, Block A, Lajpat Nagar II, Lajpat Nagar, New Delhi, Delhi 110024, India",
"end_location": {},
"start_address": "C5M9+9XG, Southend Dr, Dera Village, Dera Mandi, New Delhi, Delhi 110074, India",
"start_location": {},
"steps": [],
"traffic_speed_entry": [],
"via_waypoint": []
}
],
"overview_polyline": {},
"summary": "SSN Marg",
"warnings": [],
"waypoint_order": []
}
],
"status": "OK"
}
Мне нужны следующие значения:
  • Расстояние – (текст: 22,7 км)
  • Недлительность – (текст: 56 минут)
  • конечный_адрес.
Для простоты я взял ответ JSONArray от "маршрутов".

Код: Выделить всё

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null,
new Response.Listener() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray jsonArray = response.getJSONArray("routes");
Type collectionType = new TypeToken[*]>(){}.getType();
List directionsApiResponseList =
new Gson().fromJson(jsonArray.toString(), collectionType);
Log.d("ABCDE", directionsApiResponseList.get(0).getLegsList().get(0).getEnd_address());
} catch (JSONException e) {
throw new RuntimeException(e);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
requestQueue.add(jsonObjectRequest);
А это класс DirectionsApiResponse для использования GSON –

Код: Выделить всё

import java.util.List;
public class DirectionsApiResponse {
private List legsList;
public List getLegsList() {
return legsList;
}
public void setLegsList(List legsList) {
this.legsList = legsList;
}
}
class legs {
private distance distance;
private duration duration;
private String end_address;
public distance getDistance() {
return distance;
}
public void setDistance(distance distance) {
this.distance = distance;
}
public duration getDuration() {
return duration;
}
public void setDuration(duration duration) {
this.duration = duration;
}
public String getEnd_address() {
return end_address;
}
public void setEnd_address(String end_address) {
this.end_address = end_address;
}
}
class distance {
private String text;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
class duration {
private String text;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
На всякий случай я создал метод получения и установки для всех.
Если попытаться получить результаты из -
  • directionsApiResponse.getLegsList().toString()
  • directionsApiResponseList.get(0).getLegsList().get(0).getEnd_address()< /li>
Выдает «NullPointerException». Я ясно вижу, что «маршруты» — это массив, в котором есть 1 элемент в позиции 0, а «ноги» также имеют 1 элемент в позиции 0.
Вопросы –
  • Что я делаю не так?
  • И есть ли какой-нибудь письменный код от Google для анализа ответа JSON от Directions API, где я могу просто удалить элементы GSON мне не нужны?


Подробнее здесь: https://stackoverflow.com/questions/790 ... using-gson
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»