Example usage for com.google.gson.stream JsonReader nextString

List of usage examples for com.google.gson.stream JsonReader nextString

Introduction

In this page you can find the example usage for com.google.gson.stream JsonReader nextString.

Prototype

public String nextString() throws IOException 

Source Link

Document

Returns the com.google.gson.stream.JsonToken#STRING string value of the next token, consuming it.

Usage

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}./*from  w w  w .  j a v a2 s  .c o  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>/*w  w w.  ja v  a2  s.c  o m*/
 * {
 *   "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.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>/*from  ww w .  ja v  a  2s  .  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>//  w w w  .  j av a2  s  . c  om
 * {
 *   "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 va2  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();// w ww  .ja va 2 s .com
        return null;
    }
    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.LocalTimeAdapter.java

License:Open Source License

/**
 * Read a time from the Places API and convert to a {@link LocalTime}
 *///  w w  w .  ja  v a  2 s  .  c o  m
@Override
public LocalTime read(JsonReader reader) throws IOException {
    if (reader.peek() == JsonToken.NULL) {
        reader.nextNull();
        return null;
    }

    if (reader.peek() == JsonToken.STRING) {
        DateTimeFormatter dtf = DateTimeFormat.forPattern("HHmm");
        return LocalTime.parse(reader.nextString(), dtf);
    }

    throw new UnsupportedOperationException("Unsupported format");
}

From source file:com.google.maps.internal.SafeEnumAdapter.java

License:Open Source License

@Override
public E read(JsonReader reader) throws IOException {
    if (reader.peek() == JsonToken.NULL) {
        reader.nextNull();/*www  . ja  v a2 s  . co m*/
        return null;
    }
    String value = reader.nextString();
    try {
        return Enum.valueOf(clazz, value.toUpperCase(Locale.ENGLISH));
    } catch (IllegalArgumentException iae) {
        log.warning(String.format("Unknown type for enum %s: '%s'", clazz.getName(), value));
        return unknownValue;
    }
}

From source file:com.google.maps.internal.TravelModeAdapter.java

License:Open Source License

/**
 * Read a travel mode from a Directions API result and convert it to a {@link TravelMode}.
 *///from w ww . ja  v  a 2  s  .co m
@Override
public TravelMode read(JsonReader reader) throws IOException {
    if (reader.peek() == JsonToken.NULL) {
        reader.nextNull();
        return null;
    }

    return TravelMode.lookup(reader.nextString());
}

From source file:com.google.samples.apps.iosched.sync.userdata.util.UserActionHelper.java

License:Open Source License

public static List<UserAction> deserializeUserActions(String str) {
    try {//from  w  ww .  j a v  a  2  s  . co m
        ArrayList<UserAction> actions = new ArrayList<UserAction>();
        JsonReader reader = new JsonReader(new StringReader(str));
        reader.beginArray();
        while (reader.hasNext()) {
            reader.beginObject();
            UserAction action = new UserAction();
            while (reader.hasNext()) {
                String key = reader.nextName();
                if ("type".equals(key)) {
                    action.type = UserAction.TYPE.valueOf(reader.nextString());
                } else if ("id".equals(key)) {
                    action.sessionId = reader.nextString();
                } else {
                    throw new RuntimeException("Invalid key " + key + " in serialized UserAction: " + str);
                }
            }
            reader.endObject();
            actions.add(action);
        }
        reader.endArray();
        return actions;
    } catch (IOException ex) {
        throw new RuntimeException("Error deserializing UserActions: " + str, ex);
    }
}