List of usage examples for com.google.gson.stream JsonReader peek
public JsonToken peek() throws IOException
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; }