List of usage examples for com.google.gson.stream JsonReader nextNull
public void nextNull() throws IOException
From source file:com.google.maps.internal.AddressComponentTypeAdapter.java
License:Open Source License
/** * Read a address component type from a Geocoding API result and convert it to a * {@link AddressComponentType}./*from w ww . j av a 2s . c om*/ */ @Override public AddressComponentType read(JsonReader reader) throws IOException { if (reader.peek() == JsonToken.NULL) { reader.nextNull(); return null; } return AddressComponentType.lookup(reader.nextString()); }
From source file:com.google.maps.internal.AddressTypeAdapter.java
License:Open Source License
/** * Read a address component type from a Geocoding API result and convert it to a * {@link AddressComponentType}.// w ww.j av a2 s . co m */ @Override public AddressType read(JsonReader reader) throws IOException { if (reader.peek() == JsonToken.NULL) { reader.nextNull(); return null; } return AddressType.lookup(reader.nextString()); }
From source file:com.google.maps.internal.DateTimeAdapter.java
License:Open Source License
/** * Read a Time object from a Directions API result and convert it to a {@link DateTime}. * * <p>We are expecting to receive something akin to the following: * <pre>/* www . j ava 2 s . c om*/ * { * "text" : "4:27pm", * "time_zone" : "Australia/Sydney", * "value" : 1406528829 * } * </pre> */ @Override public DateTime read(JsonReader reader) throws IOException { if (reader.peek() == JsonToken.NULL) { reader.nextNull(); return null; } String timeZoneId = ""; long secondsSinceEpoch = 0L; reader.beginObject(); while (reader.hasNext()) { String name = reader.nextName(); if (name.equals("text")) { // Ignore the human readable rendering. reader.nextString(); } else if (name.equals("time_zone")) { timeZoneId = reader.nextString(); } else if (name.equals("value")) { secondsSinceEpoch = reader.nextLong(); } } reader.endObject(); return new DateTime(secondsSinceEpoch * 1000, DateTimeZone.forID(timeZoneId)); }
From source file:com.google.maps.internal.DayOfWeekAdapter.java
License:Open Source License
@Override public DayOfWeek read(JsonReader reader) throws IOException { if (reader.peek() == JsonToken.NULL) { reader.nextNull(); return null; }//from w ww .j av a2s . c om if (reader.peek() == JsonToken.NUMBER) { int day = reader.nextInt(); switch (day) { case 0: return DayOfWeek.SUNDAY; case 1: return DayOfWeek.MONDAY; case 2: return DayOfWeek.TUESDAY; case 3: return DayOfWeek.WEDNESDAY; case 4: return DayOfWeek.THURSDAY; case 5: return DayOfWeek.FRIDAY; case 6: return DayOfWeek.SATURDAY; } } return DayOfWeek.UNKNOWN; }
From source file:com.google.maps.internal.DistanceAdapter.java
License:Open Source License
/** * Read a distance object from a Directions API result and convert it to a {@link Distance}. * * <p>We are expecting to receive something akin to the following: * <pre>//w ww . j a v a2 s . c o m * { * "value": 207, "text": "0.1 mi" * } * </pre> */ @Override public Distance read(JsonReader reader) throws IOException { if (reader.peek() == JsonToken.NULL) { reader.nextNull(); return null; } Distance distance = new Distance(); reader.beginObject(); while (reader.hasNext()) { String name = reader.nextName(); if (name.equals("text")) { distance.humanReadable = reader.nextString(); } else if (name.equals("value")) { distance.inMeters = reader.nextLong(); } } reader.endObject(); return distance; }
From source file:com.google.maps.internal.DurationAdapter.java
License:Open Source License
/** * Read a distance object from a Directions API result and convert it to a {@link Distance}. * * <p>We are expecting to receive something akin to the following: * <pre>/*from w ww . j a v a 2 s. c o m*/ * { * "value": 207, "text": "0.1 mi" * } * </pre> */ @Override public Duration read(JsonReader reader) throws IOException { if (reader.peek() == JsonToken.NULL) { reader.nextNull(); return null; } Duration duration = new Duration(); reader.beginObject(); while (reader.hasNext()) { String name = reader.nextName(); if (name.equals("text")) { duration.humanReadable = reader.nextString(); } else if (name.equals("value")) { duration.inSeconds = reader.nextLong(); } } reader.endObject(); return duration; }
From source file:com.google.maps.internal.FareAdapter.java
License:Open Source License
/** * Read a Fare object from the Directions API and convert to a {@link com.google.maps.model.Fare} * * <pre>{/* w w w . j a v a2 s .c o m*/ * "currency": "USD", * "value": 6 * }</pre> */ @Override public Fare read(JsonReader reader) throws IOException { if (reader.peek() == JsonToken.NULL) { reader.nextNull(); return null; } Fare fare = new Fare(); reader.beginObject(); while (reader.hasNext()) { String key = reader.nextName(); if ("currency".equals(key)) { fare.currency = Currency.getInstance(reader.nextString()); } else if ("value".equals(key)) { // this relies on nextString() being able to coerce raw numbers to strings fare.value = new BigDecimal(reader.nextString()); } else { // Be forgiving of unexpected values reader.skipValue(); } } reader.endObject(); return fare; }
From source file:com.google.maps.internal.GeolocationResponseAdapter.java
License:Open Source License
@Override public GeolocationApi.Response read(JsonReader reader) throws IOException { if (reader.peek() == JsonToken.NULL) { reader.nextNull(); return null; }/* w w w. ja v a2 s . com*/ GeolocationApi.Response response = new GeolocationApi.Response(); LatLngAdapter latLngAdapter = new LatLngAdapter(); reader.beginObject(); // opening { while (reader.hasNext()) { String name = reader.nextName(); // two different objects could be returned a success object containing "location" and "accuracy" // keys or an error object containing an "error" key if (name.equals("location")) { // we already have a parser for the LatLng object so lets use that response.location = latLngAdapter.read(reader); } else if (name.equals("accuracy")) { response.accuracy = reader.nextDouble(); } else if (name.equals("error")) { reader.beginObject(); // the error key leads to another object... while (reader.hasNext()) { String errName = reader.nextName(); // ...with keys "errors", "code" and "message" if (errName.equals("code")) { response.code = reader.nextInt(); } else if (errName.equals("message")) { response.message = reader.nextString(); } else if (errName.equals("errors")) { reader.beginArray(); // its plural because its an array of errors... while (reader.hasNext()) { reader.beginObject();// ...and each error array element is an object... while (reader.hasNext()) { errName = reader.nextName(); // ...with keys "reason", "domain", "debugInfo", "location", "locationType", and "message" (again) if (errName.equals("reason")) { response.reason = reader.nextString(); } else if (errName.equals("domain")) { response.domain = reader.nextString(); } else if (errName.equals("debugInfo")) { response.debugInfo = reader.nextString(); } else if (errName.equals("message")) { // have this already reader.nextString(); } else if (errName.equals("location")) { reader.nextString(); } else if (errName.equals("locationType")) { reader.nextString(); } } reader.endObject(); } reader.endArray(); } } reader.endObject(); // closing } } } reader.endObject(); return response; }
From source file:com.google.maps.internal.InstantAdapter.java
License:Open Source License
/** * Read a time from the Places API and convert to a {@link Instant} *//*from ww w .ja va2 s . c om*/ @Override public Instant read(JsonReader reader) throws IOException { if (reader.peek() == JsonToken.NULL) { reader.nextNull(); return null; } if (reader.peek() == JsonToken.NUMBER) { // Number is the number of seconds since Epoch. return new Instant(reader.nextLong() * 1000L); } throw new UnsupportedOperationException("Unsupported format"); }
From source file:com.google.maps.internal.LatLngAdapter.java
License:Open Source License
/** * Reads in a JSON object and try to create a LatLng in one of the following formats. * * <pre>{// www.ja va2 s . c o m * "lat" : -33.8353684, * "lng" : 140.8527069 * } * * { * "latitude": -33.865257570508334, * "longitude": 151.19287000481452 * }</pre> */ @Override public LatLng read(JsonReader reader) throws IOException { if (reader.peek() == JsonToken.NULL) { reader.nextNull(); return null; } double lat = 0; double lng = 0; boolean hasLat = false; boolean hasLng = false; reader.beginObject(); while (reader.hasNext()) { String name = reader.nextName(); if ("lat".equals(name) || "latitude".equals(name)) { lat = reader.nextDouble(); hasLat = true; } else if ("lng".equals(name) || "longitude".equals(name)) { lng = reader.nextDouble(); hasLng = true; } } reader.endObject(); if (hasLat && hasLng) { return new LatLng(lat, lng); } else { return null; } }