added deserialization of the api response
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
package com.a1.nextlocation.json;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.gson.JsonArray;
|
||||
@@ -7,13 +9,18 @@ import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParser;
|
||||
|
||||
import org.osmdroid.util.GeoPoint;
|
||||
|
||||
import java.lang.reflect.Array;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class DirectionsResult {
|
||||
private static final String TAG = DirectionsResult.class.getCanonicalName();
|
||||
private List<DirectionsStep> steps = new ArrayList<>();
|
||||
private double distance;
|
||||
private double duration;
|
||||
private double[][] wayPointCoordinates;
|
||||
|
||||
public List<DirectionsStep> getSteps() {
|
||||
return steps;
|
||||
@@ -46,8 +53,21 @@ public class DirectionsResult {
|
||||
public void parse(String json) {
|
||||
|
||||
Gson gson = new GsonBuilder().setPrettyPrinting().create();
|
||||
JsonObject features = JsonParser.parseString(json).getAsJsonObject().get("features").getAsJsonArray().get(0).getAsJsonObject();
|
||||
JsonObject segment = features.get("properties").getAsJsonObject().getAsJsonArray("segments").get(0).getAsJsonObject();
|
||||
JsonObject feature = JsonParser.parseString(json).getAsJsonObject().get("features").getAsJsonArray().get(0).getAsJsonObject();
|
||||
JsonObject properties = feature.get("properties").getAsJsonObject();
|
||||
JsonArray wayPointCoordinates = feature.get("geometry").getAsJsonObject().getAsJsonArray("coordinates");
|
||||
this.wayPointCoordinates = new double[wayPointCoordinates.size()][2];
|
||||
|
||||
|
||||
for (int i = 0; i < wayPointCoordinates.size(); i++) {
|
||||
JsonElement j = wayPointCoordinates.get(i);
|
||||
JsonArray arr = j.getAsJsonArray();
|
||||
this.wayPointCoordinates[i][0] = arr.get(0).getAsDouble();
|
||||
this.wayPointCoordinates[i][1] = arr.get(1).getAsDouble();
|
||||
}
|
||||
|
||||
|
||||
JsonObject segment = properties.getAsJsonArray("segments").get(0).getAsJsonObject();
|
||||
|
||||
setDistance(segment.get("distance").getAsDouble());
|
||||
setDuration(segment.get("duration").getAsDouble());
|
||||
@@ -56,7 +76,18 @@ public class DirectionsResult {
|
||||
|
||||
for (JsonElement j : steps) {
|
||||
DirectionsStep step = gson.fromJson(j,DirectionsStep.class);
|
||||
double lat;
|
||||
double longl;
|
||||
for (int i = 0; i < 2; i++) {
|
||||
lat = this.wayPointCoordinates[step.getWay_points().get(i)][0];
|
||||
longl = this.wayPointCoordinates[step.getWay_points().get(i)][1];
|
||||
step.getWaypoints()[i] = new GeoPoint(lat,longl);
|
||||
}
|
||||
|
||||
addStep(step);
|
||||
Log.d(TAG, "parse: added step" + step);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user