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

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

Introduction

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

Prototype

public void beginObject() throws IOException 

Source Link

Document

Consumes the next token from the JSON stream and asserts that it is the beginning of a new object.

Usage

From source file:com.squareup.wire.MessageTypeAdapter.java

License:Apache License

@SuppressWarnings("unchecked")
@Override//from   ww w.j a v  a  2 s.  co m
public M read(JsonReader in) throws IOException {
    if (in.peek() == JsonToken.NULL) {
        in.nextNull();
        return null;
    }

    MessageAdapter<M> messageAdapter = wire.messageAdapter(type);
    Message.Builder<M> builder = messageAdapter.newBuilder();
    in.beginObject();

    while (in.peek() == JsonToken.NAME) {
        String name = in.nextName();
        MessageAdapter.FieldInfo fieldInfo = messageAdapter.getField(name);
        if (fieldInfo == null) {
            Extension<?, ?> extension = messageAdapter.getExtension(name);
            if (extension == null) {
                parseUnknownField(in, builder, Integer.parseInt(name));
            } else {
                Type valueType = getType(extension);
                Object value = parseValue(extension.getLabel(), valueType, parse(in));
                ((ExtendableMessage.ExtendableBuilder) builder).setExtension(extension, value);
            }
        } else {
            Type valueType = getType(fieldInfo);
            Object value = parseValue(fieldInfo.label, valueType, parse(in));
            // Use the builder setter method to ensure proper 'oneof' behavior.
            messageAdapter.setBuilderMethod(builder, fieldInfo, value);
        }
    }

    in.endObject();
    return builder.build();
}

From source file:com.suny.whereami.service.google.Place.java

License:Open Source License

/**
 * Read fields from a result object./*from  ww  w .java2s  .c  o  m*/
 * 
 * @param fields
 *            to read or 0 if all fields should be read
 * @param maxResults
 *            maximum number of reviews, events, and photos to return
 */
Place(JsonReader in, int fields, int maxResults) throws IOException {
    in.beginObject();
    while (in.hasNext()) {
        Key key = Key.get(in.nextName());
        if (key == UNKNOWN || fields != 0 && key.mField != null && !key.mField.in(fields)) {
            /* unknown field or caller doesn't want it */
            in.skipValue();
            continue;
        }

        switch (key) {
        case id:
            mId = in.nextString();
            break;
        case reference:
            mReference = in.nextString();
            break;
        case icon:
            mIcon = in.nextString();
            break;
        case url:
            mUrl = in.nextString();
            break;
        case geometry:
            in.beginObject();
            while (in.hasNext()) {
                if (in.nextName().equals("location")) {
                    in.beginObject();
                    while (in.hasNext()) {
                        switch (Key.get(in.nextName())) {
                        case lat:
                            mLat = in.nextDouble();
                            break;
                        case lng:
                            mLong = in.nextDouble();
                            break;
                        default:
                            in.skipValue();
                        }
                    }
                    in.endObject();
                } else {
                    in.skipValue(); // "viewport"
                }
            }
            in.endObject();
            break;
        case name:
            mName = in.nextString();
            break;
        case address_components:
            mAddress = new Address(in);
            break;
        case formatted_address:
            mFmtAddress = in.nextString();
            break;
        case vicinity:
            mVicinity = in.nextString();
            break;
        case international_phone_number:
            mIntlPhone = in.nextString();
            break;
        case formatted_phone_number:
            mFmtPhone = in.nextString();
            break;
        case website:
            mWebsite = in.nextString();
            break;
        case types:
            types(in);
            break;
        case price_level:
            mPrice = in.nextInt();
            break;
        case rating:
            mRating = (float) in.nextDouble();
            break;
        case reviews:
            in.beginArray();
            while (in.hasNext()) {
                if (mReviews == null) {
                    int cap = Math.min(Math.max(0, maxResults), MAX_REVIEWS);
                    mReviews = new ArrayList<Review>(cap > 0 ? cap : MAX_REVIEWS);
                }
                if (maxResults <= 0 || mReviews.size() < maxResults) {
                    mReviews.add(new Review(in));
                } else {
                    in.skipValue();
                }
            }
            in.endArray();
            break;
        case opening_hours:
            in.beginObject();
            while (in.hasNext()) {
                switch (Key.get(in.nextName())) {
                case open_now:
                    mOpen = in.nextBoolean();
                    break;
                case periods:
                    in.beginArray();
                    while (in.hasNext()) {
                        if (mOpenHours == null) {
                            mOpenHours = new ArrayList<OpeningHours>();
                        }
                        mOpenHours.add(new OpeningHours(in));
                    }
                    in.endArray();
                    break;
                default:
                    in.skipValue();
                }
            }
            in.endObject();
            break;
        case events:
            in.beginArray();
            while (in.hasNext()) {
                if (mEvents == null) {
                    int cap = Math.min(Math.max(0, maxResults), MAX_EVENTS);
                    mEvents = new ArrayList<Event>(cap > 0 ? cap : MAX_EVENTS);
                }
                if (maxResults <= 0 || mEvents.size() < maxResults) {
                    mEvents.add(new Event(in));
                } else {
                    in.skipValue();
                }
            }
            in.endArray();
            break;
        case utc_offset:
            mUtcOffset = in.nextInt();
            break;
        case photos:
            in.beginArray();
            while (in.hasNext()) {
                if (mPhotos == null) {
                    int cap = Math.min(Math.max(0, maxResults), MAX_PHOTOS);
                    mPhotos = new ArrayList<Photo>(cap > 0 ? cap : MAX_PHOTOS);
                }
                if (maxResults <= 0 || mPhotos.size() < maxResults) {
                    mPhotos.add(new Photo(in));
                } else {
                    in.skipValue();
                }
            }
            in.endArray();
            break;
        default:
            in.skipValue();
        }
    }
    in.endObject();
}

From source file:com.teotigraphix.caustk.tone.ToneUtils.java

License:Apache License

/**
 * Reads and returns the {@link ToneType} from the JSON data.
 * /*from   w  ww.  j av  a 2 s .com*/
 * @param data Valid serialized Tone data.
 * @throws IOException
 */
public static ToneType readToneType(String data) throws IOException {
    JsonReader reader = new JsonReader(new StringReader(data));
    String type = null;
    try {
        reader.beginObject();
        while (reader.hasNext()) {
            String name = reader.nextName();
            if (name.equals("toneType")) {
                type = reader.nextString();
            } else {
                reader.skipValue();
            }
        }
        reader.endObject();
    } finally {
        reader.close();
    }
    if (type != null)
        return ToneType.valueOf(type);

    return null;
}

From source file:com.triarc.sync.SyncAdapter.java

License:Apache License

@SuppressLint("NewApi")
private void readResponse(SyncTypeCollection typeCollection, InputStream inputStream, HttpResponse response)
        throws UnsupportedEncodingException, IOException, JSONException, Exception {
    long lastUpdate = 0;
    Header header = response.getFirstHeader("X-Application-Timestamp");
    if (header != null) {
        String value = header.getValue();
        lastUpdate = Long.parseLong(value);
    }//w w w  .ja  v  a2 s. c o  m

    // json is UTF-8 by default
    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8);
    JsonStreamParser parser = new JsonStreamParser(reader);
    JsonReader jsonReader = new JsonReader(reader);
    jsonReader.beginObject();
    jsonReader.nextName();
    jsonReader.beginObject();
    while (jsonReader.hasNext()) {

        String syncName = jsonReader.nextName();
        SyncType syncType = this.GetSyncType(typeCollection, syncName);

        JsonElement fromJson = new Gson().fromJson(jsonReader, JsonElement.class);
        updateLocalTypeData(fromJson.getAsJsonObject(), syncType, typeCollection, syncResult);

        notificationQueue.add(new SyncNotificationMessage(syncType, fromJson.toString()));
        // String path = jsonReader.getPath();
        // String nextName = jsonReader.nextName();
        // jsonReader.endObject();
    }
    jsonReader.endObject();

    // String json = getStringForReader(reader);
    //
    //
    // JSONObject syncChangeSets = new JSONObject(json)
    // .getJSONObject("changeSetPerType");
    //
    // // first save all
    // for (SyncType syncType : typeCollection.getTypes()) {
    // syncResult.madeSomeProgress();
    // String name = syncType.getName();
    //
    // if (syncChangeSets.has(name)) {
    // JSONObject changeSetObject = syncChangeSets.getJSONObject(name);
    // updateLocalTypeData(changeSetObject, syncType, typeCollection,
    // syncResult);
    // notificationMap.put(syncType, changeSetObject);
    // } else {
    // Log.w(TAG, "Server does not support syncing of " + name);
    // sendLogs();
    // }
    // }

    // store collection update timestamp
    PreferenceManager.getDefaultSharedPreferences(this.getContext()).edit()
            .putLong(typeCollection.getName(), lastUpdate).commit();
    // then notify all
    notifyWebApp();

}

From source file:com.utad.flume.interceptor.InterceptorTwitter.java

License:Apache License

private byte[] readJsonStream(InputStream is) {
    byte[] body = null;
    try {//  www.  java2  s  .  c o m
        JsonReader reader = new JsonReader(new InputStreamReader(is, "UTF-8"));
        try {
            long id = 0L;
            String text = null;
            String userName = null;
            String userScreenName = null;
            reader.beginObject();
            while (reader.hasNext()) {
                String name = reader.nextName();
                if (name.equals("id")) {
                    id = reader.nextLong();
                } else if (name.equals("text")) {
                    text = reader.nextString();
                } else if (name.equals("user")) {
                    reader.beginObject();
                    while (reader.hasNext()) {
                        name = reader.nextName();
                        if (name.equals("name")) {
                            userName = reader.nextString();
                        } else if (name.equals("screen_name")) {
                            userScreenName = reader.nextString();
                        } else {
                            reader.skipValue();
                        }
                    }
                    reader.endObject();
                } else {
                    reader.skipValue();
                }
            }
            reader.endObject();

            StringBuilder builder = new StringBuilder("ID:");
            builder.append(id);
            builder.append("||");
            if (outputText) {
                builder.append("TEXT:").append(text).append("||");
            }
            if (outputUserName) {
                builder.append("USER:").append(userName).append("||");
            }
            if (outputUserScreenName) {
                builder.append("SCREEN:").append(userScreenName).append("||");
            }

            logger.debug("id: {}", id);
            logger.debug("text: {}", text);
            logger.debug("username: {}", userName);
            logger.debug("screenName: {}", userScreenName);

            body = builder.toString().getBytes("UTF-8");
        } finally {
            reader.close();
        }
    } catch (UnsupportedEncodingException e) {
        logger.error("UTF-8 is not supported on this runtime", e);
    } catch (IOException e) {
        logger.error("Caught an IOException", e);
    }
    return body;
}

From source file:com.utad.flume.interceptor.InterceptorTwitterSpark.java

License:Apache License

private byte[] readJsonStream(InputStream is) {
    byte[] body = null;
    try {/*from   www .j a  va2 s .com*/
        JsonReader reader = new JsonReader(new InputStreamReader(is, "UTF-8"));
        try {
            long id = 0L;
            String text = null;
            String userName = null;
            String userScreenName = null;
            reader.beginObject();
            while (reader.hasNext()) {
                String name = reader.nextName();
                if (name.equals("id")) {
                    id = reader.nextLong();
                } else if (name.equals("text")) {
                    text = reader.nextString();
                } else if (name.equals("user")) {
                    reader.beginObject();
                    while (reader.hasNext()) {
                        name = reader.nextName();
                        if (name.equals("name")) {
                            userName = reader.nextString();
                        } else if (name.equals("screen_name")) {
                            userScreenName = reader.nextString();
                        } else {
                            reader.skipValue();
                        }
                    }
                    reader.endObject();
                } else {
                    reader.skipValue();
                }
            }
            reader.endObject();

            StringBuilder builder = new StringBuilder();

            if (textoSalida) {
                builder = new StringBuilder(text);
            }

            logger.debug("id: {}", id);
            logger.debug("text: {}", text);
            logger.debug("username: {}", userName);
            logger.debug("screenName: {}", userScreenName);

            body = builder.toString().getBytes("UTF-8");
        } finally {
            reader.close();
        }
    } catch (UnsupportedEncodingException e) {
        logger.error("UTF-8 is not supported on this runtime", e);
    } catch (IOException e) {
        logger.error("Caught an IOException", e);
    }
    return body;
}

From source file:com.vimeo.stag.generated.ParseUtils.java

public static Channel parseChannel(Gson gson, JsonReader reader) throws IOException {
    if (reader.peek() == com.google.gson.stream.JsonToken.NULL) {
        reader.nextNull();/*from ww  w. j a v a  2s  .co  m*/
        return null;
    }
    if (reader.peek() != com.google.gson.stream.JsonToken.BEGIN_OBJECT) {
        reader.skipValue();
        return null;
    }
    reader.beginObject();

    com.vimeo.networking.model.Channel object = new com.vimeo.networking.model.Channel();
    while (reader.hasNext()) {
        String name = reader.nextName();
        com.google.gson.stream.JsonToken jsonToken = reader.peek();
        if (jsonToken == com.google.gson.stream.JsonToken.NULL) {
            reader.skipValue();
            continue;
        }
        switch (name) {
        case "modified_time":
            try {
                object.modifiedTime = Stag.readFromAdapter(gson, java.util.Date.class, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing Channel.modifiedTime JSON!", exception);
            }
            break;
        case "uri":
            if (jsonToken == com.google.gson.stream.JsonToken.STRING) {
                object.uri = reader.nextString();
            } else {
                reader.skipValue();
            }
            break;
        case "metadata":
            try {
                object.metadata = ParseUtils.parseMetadata(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing Channel.metadata JSON!", exception);
            }
            break;
        case "created_time":
            try {
                object.createdTime = Stag.readFromAdapter(gson, java.util.Date.class, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing Channel.createdTime JSON!", exception);
            }
            break;
        case "user":
            try {
                object.user = ParseUtils.parseUser(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing Channel.user JSON!", exception);
            }
            break;
        case "header":
            try {
                object.header = ParseUtils.parsePictureCollection(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing Channel.header JSON!", exception);
            }
            break;
        case "link":
            if (jsonToken == com.google.gson.stream.JsonToken.STRING) {
                object.link = reader.nextString();
            } else {
                reader.skipValue();
            }
            break;
        case "privacy":
            try {
                object.privacy = ParseUtils.parsePrivacy(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing Channel.privacy JSON!", exception);
            }
            break;
        case "name":
            if (jsonToken == com.google.gson.stream.JsonToken.STRING) {
                object.name = reader.nextString();
            } else {
                reader.skipValue();
            }
            break;
        case "pictures":
            try {
                object.pictures = ParseUtils.parsePictureCollection(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing Channel.pictures JSON!", exception);
            }
            break;
        case "description":
            if (jsonToken == com.google.gson.stream.JsonToken.STRING) {
                object.description = reader.nextString();
            } else {
                reader.skipValue();
            }
            break;
        default:
            reader.skipValue();
            break;
        }
    }

    reader.endObject();
    return object;
}

From source file:com.vimeo.stag.generated.ParseUtils.java

public static StatsCollection parseStatsCollection(Gson gson, JsonReader reader) throws IOException {
    if (reader.peek() == com.google.gson.stream.JsonToken.NULL) {
        reader.nextNull();//from ww w.  j  av  a  2  s .c  om
        return null;
    }
    if (reader.peek() != com.google.gson.stream.JsonToken.BEGIN_OBJECT) {
        reader.skipValue();
        return null;
    }
    reader.beginObject();

    com.vimeo.networking.model.StatsCollection object = new com.vimeo.networking.model.StatsCollection();
    while (reader.hasNext()) {
        String name = reader.nextName();
        com.google.gson.stream.JsonToken jsonToken = reader.peek();
        if (jsonToken == com.google.gson.stream.JsonToken.NULL) {
            reader.skipValue();
            continue;
        }
        switch (name) {
        case "plays":
            try {
                object.plays = Stag.readFromAdapter(gson, java.lang.Integer.class, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing StatsCollection.plays JSON!", exception);
            }
            break;
        default:
            reader.skipValue();
            break;
        }
    }

    reader.endObject();
    return object;
}

From source file:com.vimeo.stag.generated.ParseUtils.java

public static CategoryList parseCategoryList(Gson gson, JsonReader reader) throws IOException {
    if (reader.peek() == com.google.gson.stream.JsonToken.NULL) {
        reader.nextNull();//ww  w .j  ava  2  s . co  m
        return null;
    }
    if (reader.peek() != com.google.gson.stream.JsonToken.BEGIN_OBJECT) {
        reader.skipValue();
        return null;
    }
    reader.beginObject();

    com.vimeo.networking.model.CategoryList object = new com.vimeo.networking.model.CategoryList();
    while (reader.hasNext()) {
        String name = reader.nextName();
        com.google.gson.stream.JsonToken jsonToken = reader.peek();
        if (jsonToken == com.google.gson.stream.JsonToken.NULL) {
            reader.skipValue();
            continue;
        }
        switch (name) {
        case "total":
            if (jsonToken == com.google.gson.stream.JsonToken.NUMBER) {
                object.total = reader.nextInt();
            } else {
                reader.skipValue();
            }
            break;
        case "per_page":
            if (jsonToken == com.google.gson.stream.JsonToken.NUMBER) {
                object.perPage = reader.nextInt();
            } else {
                reader.skipValue();
            }
            break;
        case "page":
            if (jsonToken == com.google.gson.stream.JsonToken.NUMBER) {
                object.page = reader.nextInt();
            } else {
                reader.skipValue();
            }
            break;
        case "data":
            if (jsonToken == com.google.gson.stream.JsonToken.BEGIN_ARRAY) {
                object.data = ParseUtils.parseArray(gson, reader, com.vimeo.networking.model.Category.class);
            } else {
                reader.skipValue();
            }
            break;
        case "paging":
            try {
                object.paging = ParseUtils.parsePaging(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing CategoryList.paging JSON!", exception);
            }
            break;
        default:
            reader.skipValue();
            break;
        }
    }

    reader.endObject();
    return object;
}

From source file:com.vimeo.stag.generated.ParseUtils.java

public static ConnectionCollection parseConnectionCollection(Gson gson, JsonReader reader) throws IOException {
    if (reader.peek() == com.google.gson.stream.JsonToken.NULL) {
        reader.nextNull();//  w w  w  .  java 2 s.  co m
        return null;
    }
    if (reader.peek() != com.google.gson.stream.JsonToken.BEGIN_OBJECT) {
        reader.skipValue();
        return null;
    }
    reader.beginObject();

    com.vimeo.networking.model.ConnectionCollection object = new com.vimeo.networking.model.ConnectionCollection();
    while (reader.hasNext()) {
        String name = reader.nextName();
        com.google.gson.stream.JsonToken jsonToken = reader.peek();
        if (jsonToken == com.google.gson.stream.JsonToken.NULL) {
            reader.skipValue();
            continue;
        }
        switch (name) {
        case "appearances":
            try {
                object.appearances = ParseUtils.parseConnection(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing ConnectionCollection.appearances JSON!", exception);
            }
            break;
        case "trailer":
            try {
                object.trailer = ParseUtils.parseConnection(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing ConnectionCollection.trailer JSON!", exception);
            }
            break;
        case "ondemand":
            try {
                object.ondemand = ParseUtils.parseConnection(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing ConnectionCollection.ondemand JSON!", exception);
            }
            break;
        case "videos":
            try {
                object.videos = ParseUtils.parseConnection(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing ConnectionCollection.videos JSON!", exception);
            }
            break;
        case "feed":
            try {
                object.feed = ParseUtils.parseConnection(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing ConnectionCollection.feed JSON!", exception);
            }
            break;
        case "credits":
            try {
                object.credits = ParseUtils.parseConnection(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing ConnectionCollection.credits JSON!", exception);
            }
            break;
        case "shared":
            try {
                object.shared = ParseUtils.parseConnection(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing ConnectionCollection.shared JSON!", exception);
            }
            break;
        case "categories":
            try {
                object.categories = ParseUtils.parseConnection(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing ConnectionCollection.categories JSON!", exception);
            }
            break;
        case "recommendations":
            try {
                object.recommendations = ParseUtils.parseConnection(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing ConnectionCollection.recommendations JSON!", exception);
            }
            break;
        case "recommended_users":
            try {
                object.recommendedUsers = ParseUtils.parseConnection(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing ConnectionCollection.recommendedUsers JSON!", exception);
            }
            break;
        case "replies":
            try {
                object.replies = ParseUtils.parseConnection(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing ConnectionCollection.replies JSON!", exception);
            }
            break;
        case "comments":
            try {
                object.comments = ParseUtils.parseConnection(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing ConnectionCollection.comments JSON!", exception);
            }
            break;
        case "groups":
            try {
                object.groups = ParseUtils.parseConnection(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing ConnectionCollection.groups JSON!", exception);
            }
            break;
        case "watchlater":
            try {
                object.watchlater = ParseUtils.parseConnection(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing ConnectionCollection.watchlater JSON!", exception);
            }
            break;
        case "texttracks":
            try {
                object.texttracks = ParseUtils.parseConnection(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing ConnectionCollection.texttracks JSON!", exception);
            }
            break;
        case "likes":
            try {
                object.likes = ParseUtils.parseConnection(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing ConnectionCollection.likes JSON!", exception);
            }
            break;
        case "activities":
            try {
                object.activities = ParseUtils.parseConnection(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing ConnectionCollection.activities JSON!", exception);
            }
            break;
        case "moderated_channels":
            try {
                object.moderatedChannels = ParseUtils.parseConnection(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing ConnectionCollection.moderatedChannels JSON!", exception);
            }
            break;
        case "related":
            try {
                object.related = ParseUtils.parseConnection(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing ConnectionCollection.related JSON!", exception);
            }
            break;
        case "users":
            try {
                object.users = ParseUtils.parseConnection(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing ConnectionCollection.users JSON!", exception);
            }
            break;
        case "following":
            try {
                object.following = ParseUtils.parseConnection(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing ConnectionCollection.following JSON!", exception);
            }
            break;
        case "pictures":
            try {
                object.pictures = ParseUtils.parseConnection(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing ConnectionCollection.pictures JSON!", exception);
            }
            break;
        case "followers":
            try {
                object.followers = ParseUtils.parseConnection(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing ConnectionCollection.followers JSON!", exception);
            }
            break;
        case "albums":
            try {
                object.albums = ParseUtils.parseConnection(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing ConnectionCollection.albums JSON!", exception);
            }
            break;
        case "channels":
            try {
                object.channels = ParseUtils.parseConnection(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing ConnectionCollection.channels JSON!", exception);
            }
            break;
        case "playback":
            try {
                object.playbackFailureReason = ParseUtils.parseConnection(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing ConnectionCollection.playbackFailureReason JSON!",
                        exception);
            }
            break;
        case "recommended_channels":
            try {
                object.recommendedChannels = ParseUtils.parseConnection(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing ConnectionCollection.recommendedChannels JSON!",
                        exception);
            }
            break;
        case "portfolios":
            try {
                object.portfolios = ParseUtils.parseConnection(gson, reader);
            } catch (Exception exception) {
                throw new IOException("Error parsing ConnectionCollection.portfolios JSON!", exception);
            }
            break;
        default:
            reader.skipValue();
            break;
        }
    }

    reader.endObject();
    return object;
}