@Override public Object fromJson(JsonReader reader) throws IOException { List<Object> list = new ArrayList<>(); reader.beginArray(); while (reader.hasNext()) { list.add(elementAdapter.fromJson(reader)); } reader.endArray(); Object array = Array.newInstance(elementClass, list.size()); for (int i = 0; i < list.size(); i++) { Array.set(array, i, list.get(i)); } return array; }
@Override public SortedSet<T> fromJson(JsonReader reader) throws IOException { TreeSet<T> result = new TreeSet<>(); reader.beginArray(); while (reader.hasNext()) { result.add(elementAdapter.fromJson(reader)); } reader.endArray(); return result; }
@Override public List<Long> fromJson(JsonReader reader) throws IOException { List<Long> result = new ArrayList<>(); reader.beginArray(); while (reader.hasNext()) { result.add(UINT64_JSON_ADAPTER.fromJson(reader)); } reader.endArray(); return result; }
@Override public C fromJson(JsonReader reader) throws IOException { C result = newCollection(); reader.beginArray(); while (reader.hasNext()) { result.add(elementAdapter.fromJson(reader)); } reader.endArray(); return result; }
@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 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; }
private int labelIndex(JsonReader reader) throws IOException { reader.beginObject(); while (reader.hasNext()) { if (reader.selectName(labelKeyOptions) == -1) { reader.skipName(); reader.skipValue(); continue; } int labelIndex = reader.selectString(labelOptions); if (labelIndex == -1 && !defaultValueSet) { throw new JsonDataException("Expected one of " + labels + " for key '" + labelKey + "' but found '" + reader.nextString() + "'. Register a subtype for this label."); } reader.close(); return labelIndex; } throw new JsonDataException("Missing label for " + labelKey); }
while (in.hasNext()) { int index = in.selectName(options); if (index == -1) {
@Override public Object fromJson(JsonReader reader) throws IOException { List<Object> list = new ArrayList<>(); reader.beginArray(); while (reader.hasNext()) { list.add(elementAdapter.fromJson(reader)); } reader.endArray(); Object array = Array.newInstance(elementClass, list.size()); for (int i = 0; i < list.size(); i++) { Array.set(array, i, list.get(i)); } return array; }
@Override public T fromJson(JsonReader reader) throws IOException { // We can't know the size of the array at this point. //noinspection CollectionWithoutInitialCapacity List<Object> result = new ArrayList<>(); reader.beginArray(); while (reader.hasNext()) { result.add(elementAdapter.fromJson(reader)); } reader.endArray(); if (isFirst) { //noinspection unchecked return !result.isEmpty() ? (T) result.get(0) : null; } //noinspection unchecked return (T) result; }
@Override public C fromJson(JsonReader reader) throws IOException { C result = newCollection(); reader.beginArray(); while (reader.hasNext()) { result.add(elementAdapter.fromJson(reader)); } reader.endArray(); return result; }
@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 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(); } }
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(); } }
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 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; }