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

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

Introduction

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

Prototype

public void beginArray() throws IOException 

Source Link

Document

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

Usage

From source file:com.quarterfull.newsAndroid.reader.owncloud.OwnCloudReaderMethods.java

License:Open Source License

/**
 * can parse json like {"items":[{"id":6782}]}
 * @param in//from  ww  w  .ja  v  a2s.co  m
 * @param iJoBj
 * @return new int[] { count, newItemsCount }
 * @throws IOException
 */
public static int[] readJsonStreamV1(InputStream in, IHandleJsonObject iJoBj) throws IOException {
    int count = 0;
    int newItemsCount = 0;
    JsonReader reader = new JsonReader(new InputStreamReader(in, "UTF-8"));
    reader.beginObject();//{
    reader.nextName();//"ocs"
    reader.beginObject();//{
    reader.nextName();//meta

    getJSONObjectFromReader(reader);//skip status etc.

    reader.nextName();//data
    reader.beginObject();//{
    reader.nextName();//folders etc..

    reader.beginArray();
    while (reader.hasNext()) {
        //reader.beginObject();

        JSONObject e = getJSONObjectFromReader(reader);

        if (iJoBj.performAction(e))
            newItemsCount++;

        //reader.endObject();
        count++;
    }

    if (iJoBj instanceof InsertItemIntoDatabase)
        ((InsertItemIntoDatabase) iJoBj).performDatabaseBatchInsert(); //Save pending buffer

    //reader.endArray();
    //reader.endObject();
    reader.close();

    return new int[] { count, newItemsCount };
}

From source file:com.quarterfull.newsAndroid.reader.owncloud.OwnCloudReaderMethods.java

License:Open Source License

private static JSONObject getJSONObjectFromReader(JsonReader jsonReader) {
    JSONObject jObj = new JSONObject();
    JsonToken tokenInstance;/* ww w. ja  v  a2 s.c  o m*/
    try {
        tokenInstance = jsonReader.peek();
        if (tokenInstance == JsonToken.BEGIN_OBJECT)
            jsonReader.beginObject();
        else if (tokenInstance == JsonToken.BEGIN_ARRAY)
            jsonReader.beginArray();

        while (jsonReader.hasNext()) {
            JsonToken token;
            String name;
            try {
                name = jsonReader.nextName();
                token = jsonReader.peek();

                //Log.d(TAG, token.toString());

                switch (token) {
                case NUMBER:
                    jObj.put(name, jsonReader.nextLong());
                    break;
                case NULL:
                    jsonReader.skipValue();
                    break;
                case BOOLEAN:
                    jObj.put(name, jsonReader.nextBoolean());
                    break;
                case BEGIN_OBJECT:
                    //jsonReader.beginObject();
                    jObj.put(name, getJSONObjectFromReader(jsonReader));
                    //jsonReader.endObject();
                    break;
                case BEGIN_ARRAY:
                    jsonReader.skipValue();
                    break;
                default:
                    jObj.put(name, jsonReader.nextString());
                }
            } catch (Exception ex) {
                ex.printStackTrace();
                jsonReader.skipValue();
            }
        }

        if (tokenInstance == JsonToken.BEGIN_OBJECT)
            jsonReader.endObject();
        else if (tokenInstance == JsonToken.BEGIN_ARRAY)
            jsonReader.endArray();

        return jObj;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

From source file:com.replaymod.replaystudio.pathing.serialize.LegacyKeyframeSetAdapter.java

License:MIT License

@SuppressWarnings("unchecked")
@Override//ww w.  ja  v a 2 s  .c  o  m
public KeyframeSet[] read(JsonReader in) throws IOException {
    List<KeyframeSet> sets = new ArrayList<>();

    in.beginArray();
    while (in.hasNext()) { //iterate over all array entries

        KeyframeSet set = new KeyframeSet();
        List<Keyframe> positionKeyframes = new ArrayList<>();
        List<Keyframe> timeKeyframes = new ArrayList<>();

        in.beginObject();
        while (in.hasNext()) { //iterate over all object entries
            String jsonTag = in.nextName();

            if ("name".equals(jsonTag)) {
                set.name = in.nextString();

                //TODO: Adapt to new Spectator Keyframe system
            } else if ("positionKeyframes".equals(jsonTag)) {
                in.beginArray();
                while (in.hasNext()) {
                    Keyframe<AdvancedPosition> newKeyframe = new Keyframe<>();
                    Integer spectatedEntityID = null;
                    in.beginObject();
                    while (in.hasNext()) {
                        String jsonKeyframeTag = in.nextName();
                        if ("value".equals(jsonKeyframeTag) || "position".equals(jsonKeyframeTag)) {
                            SpectatorData spectatorData = new Gson().fromJson(in, SpectatorData.class);
                            if (spectatorData.spectatedEntityID != null) {
                                newKeyframe.value = spectatorData;
                            } else {
                                newKeyframe.value = new AdvancedPosition();
                                newKeyframe.value.x = spectatorData.x;
                                newKeyframe.value.y = spectatorData.y;
                                newKeyframe.value.z = spectatorData.z;
                                newKeyframe.value.yaw = spectatorData.yaw;
                                newKeyframe.value.pitch = spectatorData.pitch;
                                newKeyframe.value.roll = spectatorData.roll;
                            }
                        } else if ("realTimestamp".equals(jsonKeyframeTag)) {
                            newKeyframe.realTimestamp = in.nextInt();
                        } else if ("spectatedEntityID".equals(jsonKeyframeTag)) {
                            spectatedEntityID = in.nextInt();
                        }
                    }

                    if (spectatedEntityID != null) {
                        AdvancedPosition pos = newKeyframe.value;
                        SpectatorData spectatorData = new SpectatorData();
                        spectatorData.spectatedEntityID = spectatedEntityID;
                        newKeyframe.value = spectatorData;
                        newKeyframe.value.x = pos.x;
                        newKeyframe.value.y = pos.y;
                        newKeyframe.value.z = pos.z;
                        newKeyframe.value.yaw = pos.yaw;
                        newKeyframe.value.pitch = pos.pitch;
                        newKeyframe.value.roll = pos.roll;
                    }

                    in.endObject();

                    positionKeyframes.add(newKeyframe);
                }
                in.endArray();

            } else if ("timeKeyframes".equals(jsonTag)) {
                in.beginArray();
                while (in.hasNext()) {
                    Keyframe<TimestampValue> newKeyframe = new Keyframe<>();

                    in.beginObject();
                    while (in.hasNext()) {
                        String jsonKeyframeTag = in.nextName();
                        if ("timestamp".equals(jsonKeyframeTag)) {
                            TimestampValue timestampValue = new TimestampValue();
                            timestampValue.value = in.nextInt();
                            newKeyframe.value = timestampValue;
                        } else if ("value".equals(jsonKeyframeTag)) {
                            newKeyframe.value = new Gson().fromJson(in, TimestampValue.class);
                        } else if ("realTimestamp".equals(jsonKeyframeTag)) {
                            newKeyframe.realTimestamp = in.nextInt();
                        }
                    }
                    in.endObject();

                    timeKeyframes.add(newKeyframe);
                }
                in.endArray();

            } else if ("customObjects".equals(jsonTag)) {
                set.customObjects = new Gson().fromJson(in, CustomImageObject[].class);
            }
        }
        in.endObject();

        set.positionKeyframes = positionKeyframes.toArray(new Keyframe[positionKeyframes.size()]);
        set.timeKeyframes = timeKeyframes.toArray(new Keyframe[timeKeyframes.size()]);
        sets.add(set);
    }
    in.endArray();

    return sets.toArray(new KeyframeSet[sets.size()]);
}

From source file:com.replaymod.replaystudio.pathing.serialize.TimelineSerialization.java

License:MIT License

public Map<String, Timeline> deserialize(String serialized) throws IOException {
    JsonReader reader = new JsonReader(new StringReader(serialized));
    Map<String, Timeline> timelines = new LinkedHashMap<>();
    reader.beginObject();// w  w w .  j av  a2s.co m
    while (reader.hasNext()) {
        Timeline timeline = registry.createTimeline();
        timelines.put(reader.nextName(), timeline);
        reader.beginArray();
        while (reader.hasNext()) {
            Path path = timeline.createPath();
            reader.beginObject();
            List<Integer> segments = new ArrayList<>();
            List<Interpolator> interpolators = new ArrayList<>();
            while (reader.hasNext()) {
                switch (reader.nextName()) {
                case "keyframes":
                    reader.beginArray();
                    while (reader.hasNext()) {
                        long time = 0;
                        Map<Property, Object> properties = new HashMap<>();
                        reader.beginObject();
                        while (reader.hasNext()) {
                            switch (reader.nextName()) {
                            case "time":
                                time = reader.nextLong();
                                break;
                            case "properties":
                                reader.beginObject();
                                while (reader.hasNext()) {
                                    String id = reader.nextName();
                                    Property property = timeline.getProperty(id);
                                    if (property == null) {
                                        throw new IOException("Unknown property: " + id);
                                    }
                                    Object value = property.fromJson(reader);
                                    properties.put(property, value);
                                }
                                reader.endObject();
                                break;
                            }
                        }
                        reader.endObject();
                        Keyframe keyframe = path.insert(time);
                        for (Map.Entry<Property, Object> entry : properties.entrySet()) {
                            keyframe.setValue(entry.getKey(), entry.getValue());
                        }
                    }
                    reader.endArray();
                    break;
                case "segments":
                    reader.beginArray();
                    while (reader.hasNext()) {
                        if (reader.peek() == JsonToken.NULL) {
                            reader.nextNull();
                            segments.add(null);
                        } else {
                            segments.add(reader.nextInt());
                        }
                    }
                    reader.endArray();
                    break;
                case "interpolators":
                    reader.beginArray();
                    while (reader.hasNext()) {
                        reader.beginObject();
                        Interpolator interpolator = null;
                        Set<String> properties = new HashSet<>();
                        while (reader.hasNext()) {
                            switch (reader.nextName()) {
                            case "type":
                                interpolator = registry.deserializeInterpolator(reader);
                                break;
                            case "properties":
                                reader.beginArray();
                                while (reader.hasNext()) {
                                    properties.add(reader.nextString());
                                }
                                reader.endArray();
                                break;
                            }
                        }
                        if (interpolator == null) {
                            throw new IOException("Missing interpolator type");
                        }
                        for (String propertyName : properties) {
                            Property property = timeline.getProperty(propertyName);
                            if (property == null) {
                                throw new IOException("Timeline does not know property '" + propertyName + "'");
                            }
                            interpolator.registerProperty(property);
                        }
                        interpolators.add(interpolator);
                        reader.endObject();
                    }
                    reader.endArray();
                    break;
                }
            }
            Iterator<Integer> iter = segments.iterator();
            for (PathSegment segment : path.getSegments()) {
                Integer next = iter.next();
                if (next != null) {
                    segment.setInterpolator(interpolators.get(next));
                }
            }
            reader.endObject();
        }
        reader.endArray();
    }
    reader.endObject();
    return timelines;
}

From source file:com.sap.core.odata.core.ep.consumer.JsonLinkConsumer.java

License:Apache License

private List<String> readLinksArray(final JsonReader reader) throws IOException, EntityProviderException {
    List<String> links = new ArrayList<String>();

    reader.beginArray();
    while (reader.hasNext()) {
        reader.beginObject();/*from   w  w  w  .j  av a  2 s . c o m*/
        String nextName = reader.nextName();
        if (FormatJson.URI.equals(nextName) && reader.peek() == JsonToken.STRING) {
            links.add(reader.nextString());
        } else {
            throw new EntityProviderException(
                    EntityProviderException.INVALID_CONTENT.addContent(FormatJson.URI).addContent(nextName));
        }
        reader.endObject();
    }
    reader.endArray();

    return links;
}

From source file:com.sap.core.odata.core.ep.consumer.JsonServiceDocumentConsumer.java

License:Apache License

private void readContent(final JsonReader reader) throws IOException, EdmException, EntityProviderException {
    currentHandledObjectName = reader.nextName();
    if (FormatJson.ENTITY_SETS.equals(currentHandledObjectName)) {
        reader.beginArray();
        readEntitySets(reader);/*from  w  w  w.j  a v a2 s. c  o m*/
        reader.endArray();
    }
}

From source file:com.seleritycorp.common.base.coreservices.RawCoreServiceClient.java

License:Apache License

private void pushToWriter(JsonReader reader, JsonWriter writer) throws IOException {
    int count = 0;
    boolean isObject = reader.peek() == JsonToken.BEGIN_OBJECT;
    do {//from   www  .jav  a 2s  . co m
        JsonToken jsToken = reader.peek();
        switch (jsToken) {
        case BEGIN_ARRAY:
            reader.beginArray();
            writer.beginArray();
            if (!isObject) {
                count++;
            }
            break;
        case END_ARRAY:
            reader.endArray();
            writer.endArray();
            if (!isObject) {
                count--;
            }
            break;
        case BEGIN_OBJECT:
            reader.beginObject();
            writer.beginObject();
            if (isObject) {
                count++;
            }
            break;
        case END_OBJECT:
            reader.endObject();
            writer.endObject();
            if (isObject) {
                count--;
            }
            break;
        case NAME:
            String name = reader.nextName();
            writer.name(name);
            break;
        case STRING:
            String stringValue = reader.nextString();
            writer.value(stringValue);
            break;
        case NUMBER:
            String numValue = reader.nextString();
            writer.value(new BigDecimal(numValue));
            break;
        case BOOLEAN:
            boolean boolValue = reader.nextBoolean();
            writer.value(boolValue);
            break;
        case NULL:
            reader.nextNull();
            writer.nullValue();
            break;
        case END_DOCUMENT:
            return;
        default:
            return;
        }
    } while (count != 0);
}

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

License:Apache License

private void parseUnknownField(JsonReader in, Message.Builder<M> builder, int tag) throws IOException {
    in.beginArray();
    UnknownFieldType type = UnknownFieldType.of(in.nextString());
    while (in.peek() != JsonToken.END_ARRAY) {
        switch (type) {
        case VARINT:
            builder.addVarint(tag, in.nextInt());
            break;
        case FIXED32:
            builder.addFixed32(tag, in.nextInt());
            break;
        case FIXED64:
            builder.addFixed64(tag, in.nextInt());
            break;
        case LENGTH_DELIMITED:
            builder.addLengthDelimited(tag, ByteString.decodeBase64(in.nextString()));
            break;
        default:/*from w  ww. j  a  va2s .  c  om*/
            throw new AssertionError("Unknown field type " + type);
        }
    }
    in.endArray();
}

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

License:Open Source License

/**
 * Read fields from a result object./*from  w w  w  .  j ava 2 s.c  om*/
 * 
 * @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.suny.whereami.service.google.Place.java

License:Open Source License

/**
 * Read field values from a types array.
 *///from  www  .  j  a v a2s .com
void types(JsonReader in) throws IOException {
    in.beginArray();
    while (in.hasNext()) {
        if (mTypes == null) {
            mTypes = new ArrayList<String>();
        }
        mTypes.add(in.nextString());
    }
    in.endArray();
}