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

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

Introduction

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

Prototype

public JsonToken peek() throws IOException 

Source Link

Document

Returns the type of the next token without consuming it.

Usage

From source file:com.github.kevinsawicki.halligan.Resource.java

License:Open Source License

/**
 * Parse resource property//  w  ww .ja  v  a 2s . c o m
 *
 * @param reader
 * @param name
 * @throws IOException
 */
protected void parseProperty(final JsonReader reader, final String name) throws IOException {
    JsonToken next = reader.peek();
    switch (next) {
    case BEGIN_OBJECT:
        properties.put(name, gson.getGson().fromJson(reader, Map.class));
        break;
    case STRING:
        properties.put(name, reader.nextString());
        break;
    case NUMBER:
        properties.put(name, reader.nextDouble());
        break;
    case NULL:
        properties.put(name, null);
        reader.nextNull();
        break;
    case BOOLEAN:
        properties.put(name, reader.nextBoolean());
        break;
    default:
        throw new IOException("Unrecognized property value token: " + next);
    }
}

From source file:com.github.lindenb.gatkui.Json2Xml.java

License:Open Source License

private void parseObject(String label, JsonReader r) throws Exception {

    w.writeStartElement(NS, "object");
    if (label != null)
        w.writeAttribute("name", label);
    for (;;) {//  ww  w.j a va 2 s .  c  o  m
        if (r.peek() == JsonToken.END_OBJECT)
            break;
        if (r.peek() != JsonToken.NAME)
            throw new IllegalStateException(r.peek().name());
        String s = r.nextName();
        parse(s, r);
    }
    w.writeEndElement();
    r.endObject();
}

From source file:com.github.lindenb.gatkui.Json2Xml.java

License:Open Source License

private void parseArray(String label, JsonReader r) throws Exception {

    w.writeStartElement(NS, "array");
    if (label != null)
        w.writeAttribute("name", label);
    for (;;) {//from   w w w  .  ja v a  2  s  .c  o  m
        if (r.peek() == JsonToken.END_ARRAY)
            break;
        parse(null, r);
    }
    w.writeEndElement();
    r.endArray();
}

From source file:com.github.lindenb.gatkui.Json2Xml.java

License:Open Source License

private void parse(String label, JsonReader r) throws Exception {
    if (!r.hasNext())
        return;//from  w w w . j  a  v a2s . co  m
    JsonToken token = r.peek();
    switch (token) {
    case NAME:
        break;
    case BEGIN_OBJECT: {
        r.beginObject();
        parseObject(label, r);
        break;
    }
    case END_OBJECT: {
        break;
    }
    case BEGIN_ARRAY: {
        r.beginArray();
        parseArray(label, r);
        break;
    }
    case END_ARRAY: {
        break;
    }
    case NULL: {
        r.nextNull();
        w.writeEmptyElement(NS, "null");
        if (label != null)
            w.writeAttribute("name", label);
        break;
    }
    case STRING: {
        w.writeStartElement(NS, "string");
        if (label != null)
            w.writeAttribute("name", label);
        w.writeCharacters(r.nextString());
        w.writeEndElement();
        break;
    }
    case NUMBER: {
        w.writeStartElement(NS, "number");
        if (label != null)
            w.writeAttribute("name", label);
        String s;
        try {
            s = String.valueOf(r.nextLong());
        } catch (Exception err) {
            s = String.valueOf(r.nextDouble());
        }

        w.writeCharacters(s);
        w.writeEndElement();
        break;
    }
    case BOOLEAN: {
        w.writeStartElement(NS, "boolean");
        if (label != null)
            w.writeAttribute("name", label);
        w.writeCharacters(String.valueOf(r.nextBoolean()));
        w.writeEndElement();
        break;
    }
    case END_DOCUMENT: {
        break;
    }
    default:
        throw new IllegalStateException(token.name());
    }

}

From source file:com.github.riotopsys.malforandroid2.util.AnimeWatchedStatusTypeAdapter.java

License:Apache License

@Override
public AnimeWatchedStatus read(JsonReader in) throws IOException {
    if (in.peek() != JsonToken.NULL) {
        return AnimeWatchedStatus.getByServerKey(in.nextString());
    }/*w  w  w.j  a v a 2  s  . c o m*/
    in.nextNull();
    return null;
}

From source file:com.github.riotopsys.malforandroid2.util.MangaReadStatusTypeAdapter.java

License:Apache License

@Override
public MangaReadStatus read(JsonReader in) throws IOException {
    if (in.peek() != JsonToken.NULL) {
        return MangaReadStatus.getByServerKey(in.nextString());
    }/*  www .  j a  v a  2 s .c  o m*/
    in.nextNull();
    return null;
}

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 2  s  .com*/
 */
@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 w w  . j ava  2s . c om*/
 */
@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>//from w  w  w.  j  a  va  2s .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();//from  w w w. j  a  va 2 s  . c o m
        return null;
    }

    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;
}