public T read(JsonReader in) throws IOException { if (in.peek() == JsonToken.NULL) { in.nextNull(); return null; } T instance = this.constructor.construct(); try { in.beginObject(); while (in.hasNext()) { BoundField field = (BoundField) this.boundFields.get(in.nextName()); if (field == null || !field.deserialized) { in.skipValue(); } else { field.read(in, instance); } } in.endObject(); return instance; } catch (Throwable e) { throw new JsonSyntaxException(e); } catch (IllegalAccessException e2) { throw new AssertionError(e2); } }
/** Forces creation of more strict in string reading if in !lenient mode */ private JsonReader createJsonReader(Reader reader) { if (!options.lenient) { return new JsonReader(reader) { @Override public String nextString() throws IOException { JsonToken peeked = peek(); if (peeked == JsonToken.STRING) { return super.nextString(); } throw new JsonParseException( String.format("In strict mode (!lenient) string read only from string literal, not %s. Path: %s", peeked, getPath())); } }; } return new JsonReader(reader); }
public final TypeAdapter<T> nullSafe() { return new TypeAdapter<T>() { public void write(JsonWriter out, T value) throws IOException { if (value == null) { out.nullValue(); } else { TypeAdapter.this.write(out, value); } } public T read(JsonReader reader) throws IOException { if (reader.peek() != JsonToken.NULL) { return TypeAdapter.this.read(reader); } reader.nextNull(); return null; } }; }
private TypeAdapter<Number> floatAdapter(boolean serializeSpecialFloatingPointValues) { if (serializeSpecialFloatingPointValues) { return TypeAdapters.FLOAT; } return new TypeAdapter<Number>() { public Float read(JsonReader in) throws IOException { if (in.peek() != JsonToken.NULL) { return Float.valueOf((float) in.nextDouble()); } in.nextNull(); return null; } public void write(JsonWriter out, Number value) throws IOException { if (value == null) { out.nullValue(); return; } Gson.this.checkValidFloatingPoint((double) value.floatValue()); out.value(value); } }; }
public Object read(JsonReader in) throws IOException { if (in.peek() == JsonToken.NULL) { in.nextNull(); return null; } List<E> list = new ArrayList(); in.beginArray(); while (in.hasNext()) { list.add(this.componentTypeAdapter.read(in)); } in.endArray(); Object array = Array.newInstance(this.componentType, list.size()); for (int i = 0; i < list.size(); i++) { Array.set(array, i, list.get(i)); } return array; }
public Locale read(JsonReader in) throws IOException { if (in.peek() == JsonToken.NULL) { in.nextNull(); return null; } StringTokenizer tokenizer = new StringTokenizer(in.nextString(), EventsFilesManager.ROLL_OVER_FILE_NAME_SEPARATOR); String language = null; String country = null; String variant = null; if (tokenizer.hasMoreElements()) { language = tokenizer.nextToken(); } if (tokenizer.hasMoreElements()) { country = tokenizer.nextToken(); } if (tokenizer.hasMoreElements()) { variant = tokenizer.nextToken(); } if (country == null && variant == null) { return new Locale(language); } if (variant == null) { return new Locale(language, country); } return new Locale(language, country, variant); }
private TypeAdapter<Number> floatAdapter(boolean serializeSpecialFloatingPointValues) { if (serializeSpecialFloatingPointValues) { return TypeAdapters.FLOAT; } return new TypeAdapter<Number>() { @Override public Float read(JsonReader in) throws IOException { if (in.peek() == JsonToken.NULL) { in.nextNull(); return null; } return (float) in.nextDouble(); } @Override public void write(JsonWriter out, Number value) throws IOException { if (value == null) { out.nullValue(); return; } float floatValue = value.floatValue(); checkValidFloatingPoint(floatValue); out.value(value); } }; }
public JsonElement parse(Reader json) throws JsonIOException, JsonSyntaxException { try { JsonReader jsonReader = new JsonReader(json); JsonElement element = parse(jsonReader); if (element.isJsonNull() || jsonReader.peek() == JsonToken.END_DOCUMENT) { return element; } throw new JsonSyntaxException("Did not consume the entire document."); } catch (Throwable e) { throw new JsonSyntaxException(e); } catch (Throwable e2) { throw new JsonIOException(e2); } catch (Throwable e22) { throw new JsonSyntaxException(e22); } }
@Override public AnInterface read(JsonReader jsonReader) throws IOException { jsonReader.beginObject(); String name = null; while (jsonReader.peek() != JsonToken.END_OBJECT) { switch (jsonReader.nextName()) { case "name": name = jsonReader.nextString(); break; } } jsonReader.endObject(); return new AnImplementation(name); }
@Override public StringBuilder read(JsonReader in) throws IOException { if (in.peek() == JsonToken.NULL) { in.nextNull(); return null; } return new StringBuilder(in.nextString()); }
@Override public Calendar read(JsonReader in) throws IOException { if (in.peek() == JsonToken.NULL) { in.nextNull(); return null; } in.beginObject(); int year = 0; int month = 0; int dayOfMonth = 0; int hourOfDay = 0; int minute = 0; int second = 0; while (in.peek() != JsonToken.END_OBJECT) { String name = in.nextName(); int value = in.nextInt(); if (YEAR.equals(name)) { year = value; } else if (MONTH.equals(name)) { month = value; } else if (DAY_OF_MONTH.equals(name)) { dayOfMonth = value; } else if (HOUR_OF_DAY.equals(name)) { hourOfDay = value; } else if (MINUTE.equals(name)) { minute = value; } else if (SECOND.equals(name)) { second = value; } } in.endObject(); return new GregorianCalendar(year, month, dayOfMonth, hourOfDay, minute, second); }
public InetAddress read(JsonReader in) throws IOException { if (in.peek() != JsonToken.NULL) { return InetAddress.getByName(in.nextString()); } in.nextNull(); return null; }
@Override public URL read(JsonReader in) throws IOException { if (in.peek() == JsonToken.NULL) { in.nextNull(); return null; } String nextString = in.nextString(); return "null".equals(nextString) ? null : new URL(nextString); }
public Character read(JsonReader in) throws IOException { if (in.peek() == JsonToken.NULL) { in.nextNull(); return null; } String str = in.nextString(); if (str.length() == 1) { return Character.valueOf(str.charAt(0)); } throw new JsonSyntaxException("Expecting character, got: " + str); }
@Override public T read( final JsonReader in ) throws IOException { // support null objects if (in.peek() == JsonToken.NULL) { // consume object in.nextNull(); // return null return null; } try { // try to read union return readUnion(in); } catch (Exception e) { // skip remaining values while (in.hasNext()) { in.skipValue(); } // assert end of object in.endObject(); // we failed in converting the union return null; } }
public T read(JsonReader in) throws IOException { if (in.peek() != JsonToken.NULL) { return (Enum) this.nameToConstant.get(in.nextString()); } in.nextNull(); return null; }
public String read(JsonReader reader) { try { if (reader.peek() == JsonToken.NULL) { reader.nextNull(); return "";//原先是返回Null,这里改为返回空字符串 } return reader.nextString(); } catch (Exception e) { e.printStackTrace(); } return ""; }
@Override public Number read(JsonReader in) throws IOException { if (in.peek() == JsonToken.NULL) { in.nextNull(); return null; } return (float) in.nextDouble(); }
@Override public void deserialize(JsonReader reader) throws IOException { reader.beginArray(); while(reader.hasNext() && reader.peek().equals(JsonToken.STRING)) { String dim = reader.nextString(); for(DimensionType type : DimensionType.values()) if(Objects.equals(type.getName(), dim)) { add(type); break; } } }
@Override public SemanticVersion read(JsonReader in) throws IOException { in.beginArray(); int major = in.nextInt(); int minor = in.nextInt(); int patch = in.peek() == JsonToken.END_ARRAY ? 0 : in.nextInt(); in.endArray(); return new SemanticVersion(major, minor, patch); }
@Override public Character read(JsonReader in) throws IOException { if (in.peek() == JsonToken.NULL) { in.nextNull(); return null; } String str = in.nextString(); if (str.length() != 1) { throw new JsonSyntaxException("Expecting character, got: " + str); } return str.charAt(0); }
@Override public String read(JsonReader in) throws IOException { JsonToken peek = in.peek(); if (peek == JsonToken.NULL) { in.nextNull(); return null; } /* coerce booleans to strings for backwards compatibility */ if (peek == JsonToken.BOOLEAN) { return Boolean.toString(in.nextBoolean()); } return in.nextString(); }
@Override public InetAddress read(JsonReader in) throws IOException { if (in.peek() == JsonToken.NULL) { in.nextNull(); return null; } // regrettably, this should have included both the host name and the host address return InetAddress.getByName(in.nextString()); }
@Override public ItemStack read(JsonReader in) throws IOException { if (in.peek() != JsonToken.BEGIN_OBJECT) return null; int id = 1; short data = 0; int amount = 1; ItemMeta meta = null; in.beginObject(); while (in.hasNext()) { String name = in.nextName(); switch (name) { case "id": id = in.nextInt(); break; case "damage": data = (short) in.nextInt(); break; case "amount": amount = in.nextInt(); break; case "meta": meta = metaAdapter.read(in); break; default: Static.log("Unknown type, " + name); } } in.endObject(); ItemStack item = new ItemStack(id, amount, data); if (meta != null) item.setItemMeta(meta); return item; }
@Override public int nextInt() throws IOException { JsonToken token = peek(); if (token != JsonToken.NUMBER && token != JsonToken.STRING) { throw new IllegalStateException("Expected " + JsonToken.NUMBER + " but was " + token); } int result = ((JsonPrimitive) peekStack()).getAsInt(); popStack(); return result; }
private static void assertFullConsumption(Object obj, JsonReader reader) { if (obj != null) { try { if (reader.peek() != JsonToken.END_DOCUMENT) { throw new JsonIOException("JSON document was not fully consumed."); } } catch (Throwable e) { throw new JsonSyntaxException(e); } catch (Throwable e2) { throw new JsonIOException(e2); } } }
public boolean hasNext() { boolean z; synchronized (this.lock) { try { z = this.parser.peek() != JsonToken.END_DOCUMENT; } catch (Throwable e) { throw new JsonSyntaxException(e); } catch (Throwable e2) { throw new JsonIOException(e2); } } return z; }
@Override public BigInteger read(JsonReader in) throws IOException { if (in.peek() == JsonToken.NULL) { in.nextNull(); return null; } try { return new BigInteger(in.nextString()); } catch (NumberFormatException e) { throw new JsonSyntaxException(e); } }
public BigInteger read(JsonReader in) throws IOException { if (in.peek() == JsonToken.NULL) { in.nextNull(); return null; } try { return new BigInteger(in.nextString()); } catch (Throwable e) { throw new JsonSyntaxException(e); } }
@Override public Number read(JsonReader in) throws IOException { if (in.peek() == JsonToken.NULL) { in.nextNull(); return null; } try { int intValue = in.nextInt(); return (byte) intValue; } catch (NumberFormatException e) { throw new JsonSyntaxException(e); } }
@Override public Number read(JsonReader in) throws IOException { if (in.peek() == JsonToken.NULL) { in.nextNull(); return null; } try { return in.nextLong(); } catch (NumberFormatException e) { throw new JsonSyntaxException(e); } }
protected String readNext(final String name, final JsonReader reader) throws IOException { if(reader.peek() != JsonToken.NULL) { return reader.nextString(); } else { reader.skipValue(); log.warn(String.format("No value for key %s", name)); return null; } }
@Override public Date read(JsonReader in) throws IOException { if (in.peek() == JsonToken.NULL) { in.nextNull(); return null; } return deserializeToDate(in.nextString()); }
public URL read(JsonReader in) throws IOException { if (in.peek() == JsonToken.NULL) { in.nextNull(); return null; } String nextString = in.nextString(); if ("null".equals(nextString)) { return null; } return new URL(nextString); }
@Override public Number read(JsonReader in) throws IOException { JsonToken jsonToken = in.peek(); switch (jsonToken) { case NULL: in.nextNull(); return null; case NUMBER: return new LazilyParsedNumber(in.nextString()); default: throw new JsonSyntaxException("Expecting number, got: " + jsonToken); } }
@Override public UUID read(JsonReader in) throws IOException { if (in.peek() == JsonToken.NULL) { in.nextNull(); return null; } return java.util.UUID.fromString(in.nextString()); }
public long nextLong() throws IOException { JsonToken token = peek(); if (token == JsonToken.NUMBER || token == JsonToken.STRING) { long result = ((JsonPrimitive) peekStack()).getAsLong(); popStack(); return result; } throw new IllegalStateException("Expected " + JsonToken.NUMBER + " but was " + token); }