@Override public T fromJson(JsonReader reader) throws IOException { T result; try { result = classFactory.newInstance(); } catch (InstantiationException e) { throw new RuntimeException(e); } catch (InvocationTargetException e) { throw Util.rethrowCause(e); } catch (IllegalAccessException e) { throw new AssertionError(); } try { reader.beginObject(); while (reader.hasNext()) { int index = reader.selectName(options); if (index == -1) { reader.skipName(); reader.skipValue(); continue; } fieldsArray[index].read(reader, result); } reader.endObject(); return result; } catch (IllegalAccessException e) { throw new AssertionError(); } }
endObject(); return map;
@Override public Map<K, V> fromJson(JsonReader reader) throws IOException { LinkedHashTreeMap<K, V> result = new LinkedHashTreeMap<>(); reader.beginObject(); while (reader.hasNext()) { reader.promoteNameToValue(); K name = keyAdapter.fromJson(reader); V value = valueAdapter.fromJson(reader); V replaced = result.put(name, value); if (replaced != null) { throw new JsonDataException("Map key '" + name + "' has multiple values at path " + reader.getPath() + ": " + replaced + " and " + value); } } reader.endObject(); return result; }
in.endObject(); return builder.build();
@Override public List<List<XingUser>> fromJson(JsonReader reader) throws IOException { List<List<XingUser>> paths = new LinkedList<>(); reader.beginArray(); while (reader.hasNext()) { reader.beginObject(); while (reader.hasNext()) { String name = reader.nextName(); if ("users".equals(name)) { paths.add(pathAdapter.fromJson(reader)); } else { reader.skipValue(); } } reader.endObject(); } reader.endArray(); return paths; }
@Override public T fromJson(JsonReader reader) throws IOException { T result; try { result = classFactory.newInstance(); } catch (InstantiationException e) { throw new RuntimeException(e); } catch (InvocationTargetException e) { throw Util.rethrowCause(e); } catch (IllegalAccessException e) { throw new AssertionError(); } try { reader.beginObject(); while (reader.hasNext()) { int index = reader.selectName(options); if (index == -1) { reader.skipName(); reader.skipValue(); continue; } fieldsArray[index].read(reader, result); } reader.endObject(); return result; } catch (IllegalAccessException e) { throw new AssertionError(); } }
@Override public Users moshi(com.squareup.moshi.JsonReader reader) throws IOException { Users users = new Users(); reader.beginObject(); while (reader.hasNext()) { switch (reader.nextName()) { case "users": users.users = new ArrayList<>(); reader.beginArray(); while (reader.hasNext()) { users.users.add(moshiUser(reader)); } reader.endArray(); break; default: reader.skipValue(); } } reader.endObject(); return users; }
private void readWarnings(JsonReader in, Status status) throws IOException { in.beginObject(); while(in.hasNext()) { String name = in.nextName(); switch (name) { case "improperlyConfiguredCron": status.setImproperlyConfiguredCron(in.nextBoolean()); break; case "incorrectDbCharset": // TODO: 11/9/17 Show warning in.skipValue(); break; default: Log.w(TAG, "Unknown value in status warnings json: " + name); in.skipValue(); } } in.endObject(); } }
@Override public SafeCalendar fromJson(JsonReader reader) throws IOException { SafeCalendar calendar = new SafeCalendar(); reader.beginObject(); while (reader.hasNext()) { String name = reader.nextName(); // May contain null values, so just skip them. if (reader.peek() == Token.NULL) { reader.skipValue(); continue; } if ("year".equals(name)) { calendar.set(Calendar.YEAR, reader.nextInt()); } else if ("month".equals(name)) { calendar.set(Calendar.MONTH, reader.nextInt() - 1); } else if ("day".equals(name)) { calendar.set(Calendar.DAY_OF_MONTH, reader.nextInt()); } else { throw new IOException("birthday should contain 'year', 'month' and/or 'day', found $" + name); } } reader.endObject(); return calendar; }
private void parseError(NullableJsonReader reader, Feed feed) throws IOException { reader.in.beginObject(); while(reader.in.hasNext()) { switch (reader.in.nextName()) { case "code": reader.in.skipValue(); break; case "message": feed.setLastUpdateError(reader.nextString()); break; } } reader.in.endObject(); } }
@Override public GeoCode fromJson(JsonReader reader) throws IOException { // Using nulls to ensure the values where set. Double latitude = null; Double longitude = null; int accuracy = 0; reader.beginObject(); while (reader.hasNext()) { String name = reader.nextName(); if (reader.peek() == Token.NULL) { reader.skipValue(); continue; } if ("accuracy" .equals(name)) { accuracy = reader.nextInt(); } else if ("latitude" .equals(name)) { latitude = reader.nextDouble(); } else if ("longitude" .equals(name)) { longitude = reader.nextDouble(); } else { reader.skipValue(); } } reader.endObject(); if (latitude == null || longitude == null) return null; return new GeoCode(accuracy, latitude, longitude); }
@Override public TimeZone fromJson(JsonReader reader) throws IOException { String timeZoneName = null; Double utcOffset = null; reader.beginObject(); while (reader.hasNext()) { String name = reader.nextName(); if (reader.peek() == Token.NULL) { reader.skipValue(); continue; } if ("name" .equals(name)) { timeZoneName = reader.nextString(); } else if ("utc_offset" .equals(name)) { utcOffset = reader.nextDouble(); } else { reader.skipValue(); } } reader.endObject(); if (timeZoneName != null && utcOffset != null) return new TimeZone(timeZoneName, utcOffset); return null; }
private void readAvatar(JsonReader in, User user, String name) throws IOException { in.beginObject(); while(in.hasNext()) { String avatarName = in.nextName(); switch (avatarName) { case "data": user.setAvatar(in.nextString()); break; case "mime": user.setAvatarMime(in.nextString()); break; default: Log.w(TAG, "Unknown value in avatar json: " + name); in.skipValue(); break; } } in.endObject(); } }
private void parseEnclosure(NullableJsonReader reader, Item.Builder builder) throws IOException { reader.in.beginObject(); while(reader.in.hasNext()) { switch (reader.in.nextName()) { case "mimeType": builder.setEnclosureMime(reader.nextString()); break; case "url": builder.setEnclosureLink(reader.nextString()); break; } } reader.in.endObject(); }
private Friend moshiFriend(com.squareup.moshi.JsonReader reader) throws IOException { Friend friend = new Friend(); reader.beginObject(); while (reader.hasNext()) { switch (reader.nextName()) { case "id": friend.id = reader.nextString(); break; case "name": friend.name = reader.nextString(); break; default: reader.skipValue(); break; } } reader.endObject(); return friend; }
@Override public Folder fromJson(@NonNull JsonReader in) throws IOException { if (in.peek() == JsonReader.Token.NULL) { in.nextNull(); return null; } Folder folder = new Folder(); in.beginObject(); while (in.hasNext()) { String name = in.nextName(); switch (name) { case "id": folder.setId(in.nextLong()); break; case "name": folder.setName(in.nextString()); break; default: Log.w(TAG, "Unknown value in folder json: " + name); in.skipValue(); break; } } in.endObject(); return folder; } }
@Override public Map<K, V> fromJson(JsonReader reader) throws IOException { LinkedHashTreeMap<K, V> result = new LinkedHashTreeMap<>(); reader.beginObject(); while (reader.hasNext()) { reader.promoteNameToValue(); K name = keyAdapter.fromJson(reader); V value = valueAdapter.fromJson(reader); V replaced = result.put(name, value); if (replaced != null) { throw new JsonDataException("Map key '" + name + "' has multiple values at path " + reader.getPath() + ": " + replaced + " and " + value); } } reader.endObject(); return result; }
@Override public Annotation fromJson(JsonReader reader) throws IOException { Annotation.Builder result = Annotation.builder(); reader.beginObject(); while (reader.hasNext()) { switch (reader.nextName()) { case "timestamp": result.timestamp(reader.nextLong()); break; case "value": result.value(reader.nextString()); break; case "endpoint": result.endpoint(ENDPOINT_ADAPTER.fromJson(reader)); break; default: reader.skipValue(); } } reader.endObject(); return result.build(); }
@Override public DependencyLink fromJson(JsonReader reader) throws IOException { DependencyLink.Builder result = DependencyLink.builder(); reader.beginObject(); while (reader.hasNext()) { switch (reader.nextName()) { case "parent": result.parent(reader.nextString()); break; case "child": result.child(reader.nextString()); break; case "callCount": result.callCount(reader.nextLong()); break; case "errorCount": result.errorCount(reader.nextLong()); break; default: reader.skipValue(); } } reader.endObject(); return result.build(); }
@Override public Endpoint fromJson(JsonReader reader) throws IOException { Endpoint.Builder result = Endpoint.builder().serviceName(""); reader.beginObject(); while (reader.hasNext()) { String nextName = reader.nextName(); if (reader.peek() == JsonReader.Token.NULL) { reader.skipValue(); continue; } switch (nextName) { case "serviceName": result.serviceName(reader.nextString()); break; case "ipv4": case "ipv6": result.parseIp(reader.nextString()); break; case "port": result.port(reader.nextInt()); break; default: reader.skipValue(); } } reader.endObject(); return result.build(); }