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.flipkart.batching.gson.adapters.data.TagTypeAdapter.java

License:Open Source License

@Override
public Tag read(JsonReader reader) throws IOException {
    if (reader.peek() == com.google.gson.stream.JsonToken.NULL) {
        reader.nextNull();/*ww w. j av  a 2s  . c o  m*/
        return null;
    }
    if (reader.peek() != com.google.gson.stream.JsonToken.BEGIN_OBJECT) {
        reader.skipValue();
        return null;
    }
    reader.beginObject();

    String id = null;
    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 "id":
            id = com.google.gson.internal.bind.TypeAdapters.STRING.read(reader);
            break;
        default:
            reader.skipValue();
            break;
        }
    }

    reader.endObject();
    return id == null ? null : new Tag(id);
}

From source file:com.flipkart.batching.gson.adapters.DataCollectionTypeAdapter.java

License:Open Source License

@Override
public DataCollection<T> read(JsonReader reader) throws IOException {
    if (reader.peek() == com.google.gson.stream.JsonToken.NULL) {
        reader.nextNull();/*ww  w.ja  va2s  .c  o  m*/
        return null;
    }
    if (reader.peek() != com.google.gson.stream.JsonToken.BEGIN_OBJECT) {
        reader.skipValue();
        return null;
    }
    reader.beginObject();

    Collection<T> collection = null;
    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 "dataCollection":
            collection = collectionTypeAdapter.read(reader);
            break;
        default:
            reader.skipValue();
            break;
        }
    }

    reader.endObject();
    return null != collection ? new DataCollection<>(collection) : null;
}

From source file:com.flipkart.batching.gson.RuntimeTypeAdapterFactory.java

License:Open Source License

public <R> TypeAdapter<R> create(Gson gson, TypeToken<R> type) {
    if (type.getRawType() != baseType) {
        return null;
    }//w ww  .j a  va 2  s.  c om

    final Map<String, TypeAdapter<?>> labelToDelegate = new LinkedHashMap<>();
    final Map<Class<?>, TypeAdapter<?>> subtypeToDelegate = new LinkedHashMap<>();

    for (Map.Entry<String, Class<?>> entry : labelToSubtype.entrySet()) {
        TypeAdapter<?> delegate = labelToTypeAdapter.get(entry.getKey());
        if (delegate == null) {
            delegate = gson.getDelegateAdapter(this, TypeToken.get(entry.getValue()));
        }
        labelToDelegate.put(entry.getKey(), delegate);
        subtypeToDelegate.put(entry.getValue(), delegate);
    }

    return new TypeAdapter<R>() {
        @Override
        public R read(JsonReader reader) throws IOException {

            if (reader.peek() == com.google.gson.stream.JsonToken.NULL) {
                reader.nextNull();
                return null;
            }
            if (reader.peek() != com.google.gson.stream.JsonToken.BEGIN_OBJECT) {
                reader.skipValue();
                return null;
            }
            reader.beginObject();

            String label = null;
            R result = null;
            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 "type":
                    label = TypeAdapters.STRING.read(reader);
                    break;
                case "value":
                    @SuppressWarnings("unchecked") // registration requires that subtype extends T
                    TypeAdapter<R> delegate = label == null ? null
                            : (TypeAdapter<R>) labelToDelegate.get(label);
                    if (delegate == null) {
                        throw new JsonParseException("cannot deserialize " + baseType + " subtype named "
                                + label + "; did you forget to register a subtype?");
                    }
                    result = delegate.read(reader);
                    break;
                default:
                    reader.skipValue();
                    break;
                }
            }

            reader.endObject();
            return result;
        }

        @Override
        public void write(JsonWriter out, R value) throws IOException {
            Class<?> srcType = value.getClass();
            @SuppressWarnings("unchecked") // registration requires that subtype extends T
            TypeAdapter<R> delegate = (TypeAdapter<R>) subtypeToDelegate.get(srcType);
            if (delegate == null) {
                throw new JsonParseException(
                        "cannot serialize " + srcType.getName() + "; did you forget to register a subtype?");
            }
            String label = subtypeToLabel.get(srcType);
            out.beginObject();

            out.name("type");
            out.value(label);

            out.name("value");
            delegate.write(out, value);

            out.endObject();
        }
    }.nullSafe();
}

From source file:com.flowzr.budget.holo.export.flowzr.FlowzrSyncEngine.java

License:Open Source License

public static <T> int readMessage(JsonReader reader, String tableName, Class<T> clazz, long last_sync_ts)
        throws IOException, JSONException, Exception {
    String n = null;/*from  www.  j a  va  2 s . c o m*/
    int i = 0;

    while (reader.hasNext()) {
        JsonToken peek = reader.peek();

        String v = null;
        if (peek == JsonToken.BEGIN_OBJECT) {
            reader.beginObject();
        } else if (peek == JsonToken.NAME) {
            n = reader.nextName();
        } else if (peek == JsonToken.BEGIN_ARRAY) {
            if (n.equals(tableName)) {
                i = readJsnArr(reader, tableName, clazz);

            } else {
                if (n.equals("params")) {
                    reader.beginArray();
                    if (reader.hasNext()) {
                        reader.beginObject();
                        if (reader.hasNext()) {
                            n = reader.nextName();
                            v = reader.nextString();
                        }
                        reader.endObject();
                    }
                    reader.endArray();
                } else {
                    reader.skipValue();
                }
            }
        } else if (peek == JsonToken.END_OBJECT) {
            reader.endObject();
        } else if (peek == JsonToken.END_ARRAY) {
            reader.endArray();
        } else if (peek == JsonToken.STRING) {
            reader.skipValue();
        } else {
            reader.skipValue();
        }
    }
    return i;
}

From source file:com.flowzr.budget.holo.export.flowzr.FlowzrSyncEngine.java

License:Open Source License

public static <T> int readJsnArr(JsonReader reader, String tableName, Class<T> clazz)
        throws IOException, JSONException, Exception {
    JSONObject o = new JSONObject();
    JsonToken peek = reader.peek();/*from w  ww  .  j a v a2s  . c o  m*/
    String n = null;
    reader.beginArray();
    int j = 0;
    int i = 0;
    while (reader.hasNext()) {
        peek = reader.peek();
        if (reader.peek() == JsonToken.BEGIN_OBJECT) {
            reader.beginObject();
        } else if (reader.peek() == JsonToken.END_OBJECT) {
            reader.endObject();
        }
        o = new JSONObject();
        while (reader.hasNext()) {
            peek = reader.peek();
            if (peek == JsonToken.NAME) {
                n = reader.nextName();
            } else if (peek == JsonToken.BEGIN_OBJECT) {
                reader.beginObject();
            } else if (peek == JsonToken.END_OBJECT) {
                reader.endObject();
            } else if (peek == JsonToken.BOOLEAN) {
                try {
                    o.put(n, reader.nextBoolean());
                } catch (JSONException e) {

                    e.printStackTrace();
                }
            } else if (peek == JsonToken.STRING) {
                try {
                    o.put(n, reader.nextString());

                } catch (JSONException e) {

                    e.printStackTrace();
                }
            } else if (peek == JsonToken.NUMBER) {
                try {
                    o.put(n, reader.nextDouble());

                } catch (JSONException e) {

                    e.printStackTrace();
                }
            }
        }
        reader.endObject();
        if (o.has("key")) {
            i = i + 1;
            j = j + 1;
            if (j % 100 == 0) {
                j = 2;
            }
            saveEntityFromJson(o, tableName, clazz, i);
            if (i % 10 == 0) {
                //notifyUser(context.getString(R.string.flowzr_sync_receiving) + " " + tableName + ". " + context.getString(R.string.hint_run_background), (int)(Math.round(j)));
            }
        }
    }
    reader.endArray();
    return i;
}

From source file:com.flowzr.budget.holo.export.flowzr.FlowzrSyncEngine.java

License:Open Source License

public static void readDelete(JsonReader reader) throws IOException {
    reader.nextName();//  ww  w  . j  a  v  a2  s.  co  m
    reader.beginArray();
    while (reader.hasNext()) {
        reader.beginObject();
        reader.nextName(); //tablename
        String t = reader.nextString();
        reader.nextName(); //key
        execDelete(t, reader.nextString());
        reader.endObject();
    }
    reader.endArray();
}

From source file:com.flowzr.export.flowzr.FlowzrSyncEngine.java

License:Open Source License

public static void readDelete(JsonReader reader) throws IOException {
    reader.nextName();/*from   w  ww. ja v a  2 s.c  o m*/
    reader.beginArray();
    while (reader.hasNext()) {
        reader.beginObject();
        reader.nextName(); //tablename
        String t = reader.nextString();
        reader.nextName(); //key                
        execDelete(t, reader.nextString());
        reader.endObject();
    }
    reader.endArray();
}

From source file:com.funambol.android.activities.AndroidHomeScreen.java

License:Open Source License

/**
 * json//  w  ww. ja  va 2  s  . c  o  m
 * @param in
 * @throws IOException
 */
public void processJsonStream(InputStream in) throws IOException {
    JsonReader reader = new JsonReader(new InputStreamReader(in, "UTF-8"));
    reader.beginObject();
    boolean result = false;
    int contactsCount = 0; //
    int smsCount = 0; //
    long smsLastBakTime = 0; //

    while (reader.hasNext()) {
        String name = reader.nextName();
        if ("result".equals(name)) {
            result = "ok".equals(reader.nextString());
        } else if ("contacts_count".equals(name)) {
            contactsCount = Integer.valueOf(reader.nextString());
        } else if ("sms_count".equals(name)) {
            smsCount = Integer.valueOf(reader.nextString());
        } else if ("sms_last_baktime".equals(name)) {
            try {
                smsLastBakTime = Long.valueOf(reader.nextString());
            } catch (NumberFormatException e) {
                e.printStackTrace();
            }
        } else {
            reader.skipValue();
        }
    }

    reader.endObject();

    if (result) {
        //prefStore
        prefStore.setSmsCountInServer(this, smsCount);
        prefStore.setContactsCountInServer(this, contactsCount);

        //
        overviewInfoHandler.sendEmptyMessage(MSG_REFRESH_OVERVIEW_INFO);

        //0
        if (0 == contactsCount) {
            contactsImportHandler.sendEmptyMessage(0);
            Log.debug("shawnqiu", "homeScreen : processJsonStream : showContactsImporter");
        }
    }

}

From source file:com.gelakinetic.mtgfam.helpers.JsonParser.java

License:Open Source License

public void readCardJsonStream(InputStream in, CardProgressReporter progReport, String setName,
        CardDbAdapter mDbHelper, Context context) throws IOException {
    String dialogText = String.format(context.getString(R.string.update_parse_cards), setName);

    JsonReader reader = new JsonReader(new InputStreamReader(in, "ISO-8859-1"));
    String s, s1, s2, ptstr;//w  ww.j a  va 2 s.  co  m

    int numTotalElements = 0;
    int elementsParsed = 0;

    reader.beginObject();
    s = reader.nextName();

    ArrayList<MtgSet> setsAdded = new ArrayList<MtgSet>();

    progReport.reportJsonCardProgress("determinate", "");
    reader.beginObject();
    while (reader.hasNext()) {

        s = reader.nextName();
        if (s.equalsIgnoreCase("v")) { // bdd_date
            reader.skipValue();
        }
        if (s.equalsIgnoreCase("u")) { // bdd_version
            reader.skipValue();
        }
        if (s.equalsIgnoreCase("s")) { // sets
            reader.beginObject();
            while (reader.hasNext()) {
                s1 = reader.nextName();
                if (s1.equalsIgnoreCase("b")) { // set
                    MtgSet set;

                    JsonToken jt = reader.peek();
                    if (jt.equals(JsonToken.BEGIN_OBJECT)) {
                        set = new MtgSet();
                        reader.beginObject();
                        while (reader.hasNext()) {
                            s2 = reader.nextName();
                            if (s2.equalsIgnoreCase("a")) { // name
                                set.name = reader.nextString();
                            }
                            if (s2.equalsIgnoreCase("r")) { // code_magiccards
                                set.code_magiccards = reader.nextString();
                            }
                            if (s2.equalsIgnoreCase("q")) { // code
                                set.code = reader.nextString();
                            }
                            if (s2.equalsIgnoreCase("y")) { // date
                                set.date = reader.nextLong();
                            }
                        }
                        setsAdded.add(set);
                        reader.endObject();
                    } else if (jt.equals(JsonToken.BEGIN_ARRAY)) {
                        reader.beginArray();
                        while (reader.hasNext()) {
                            set = new MtgSet();
                            reader.beginObject();
                            while (reader.hasNext()) {
                                s2 = reader.nextName();
                                if (s2.equalsIgnoreCase("a")) { // name
                                    set.name = reader.nextString();
                                }
                                if (s2.equalsIgnoreCase("r")) { // code_magiccards
                                    set.code_magiccards = reader.nextString();
                                }
                                if (s2.equalsIgnoreCase("q")) { // code
                                    set.code = reader.nextString();
                                }
                                if (s2.equalsIgnoreCase("y")) { // date
                                    set.date = reader.nextLong();
                                }
                            }
                            setsAdded.add(set);
                            reader.endObject();
                        }
                        reader.endArray();
                    }
                }
            }
            reader.endObject();
        }
        if (s.equalsIgnoreCase("p")) { // cards

            reader.beginObject();
            while (reader.hasNext()) {
                s1 = reader.nextName();
                if (s1.equalsIgnoreCase("o")) { // card
                    MtgCard c;
                    reader.beginArray();
                    while (reader.hasNext()) {

                        reader.beginObject();
                        c = new MtgCard();
                        while (reader.hasNext()) {
                            s2 = reader.nextName();
                            if (s2.equalsIgnoreCase("a")) { // name
                                c.name = reader.nextString();
                            } else if (s2.equalsIgnoreCase("b")) { // set
                                c.set = reader.nextString();
                            } else if (s2.equalsIgnoreCase("c")) { // type
                                c.type = reader.nextString();
                            } else if (s2.equalsIgnoreCase("d")) { // rarity
                                c.rarity = reader.nextString().charAt(0);
                            } else if (s2.equalsIgnoreCase("e")) { // manacost
                                c.manacost = reader.nextString();
                            } else if (s2.equalsIgnoreCase("f")) { // converted_manacost
                                try {
                                    c.cmc = reader.nextInt();
                                } catch (Exception e) {
                                    reader.skipValue();
                                }

                            } else if (s2.equalsIgnoreCase("g")) { // power
                                try {
                                    ptstr = reader.nextString();
                                    try {
                                        c.power = Integer.parseInt(ptstr);
                                    } catch (NumberFormatException e) {
                                        if (ptstr.equals("*")) {
                                            c.power = CardDbAdapter.STAR;
                                        } else if (ptstr.equals("1+*")) {
                                            c.power = CardDbAdapter.ONEPLUSSTAR;
                                        } else if (ptstr.equals("2+*")) {
                                            c.power = CardDbAdapter.TWOPLUSSTAR;
                                        } else if (ptstr.equals("7-*")) {
                                            c.power = CardDbAdapter.SEVENMINUSSTAR;
                                        } else if (ptstr.equals("*{^2}")) {
                                            c.power = CardDbAdapter.STARSQUARED;
                                        } else if (ptstr.equals("{1/2}")) {
                                            c.power = 0.5f;
                                        } else if (ptstr.equals("1{1/2}")) {
                                            c.power = 1.5f;
                                        } else if (ptstr.equals("2{1/2}")) {
                                            c.power = 2.5f;
                                        } else if (ptstr.equals("3{1/2}")) {
                                            c.power = 3.5f;
                                        }
                                    }
                                } catch (Exception e) {
                                    reader.skipValue();
                                }
                            } else if (s2.equalsIgnoreCase("h")) { // toughness
                                try {
                                    ptstr = reader.nextString();
                                    try {
                                        c.toughness = Integer.parseInt(ptstr);
                                    } catch (NumberFormatException e) {
                                        if (ptstr.equals("*")) {
                                            c.toughness = CardDbAdapter.STAR;
                                        } else if (ptstr.equals("1+*")) {
                                            c.toughness = CardDbAdapter.ONEPLUSSTAR;
                                        } else if (ptstr.equals("2+*")) {
                                            c.toughness = CardDbAdapter.TWOPLUSSTAR;
                                        } else if (ptstr.equals("7-*")) {
                                            c.toughness = CardDbAdapter.SEVENMINUSSTAR;
                                        } else if (ptstr.equals("*{^2}")) {
                                            c.toughness = CardDbAdapter.STARSQUARED;
                                        } else if (ptstr.equals("{1/2}")) {
                                            c.toughness = 0.5f;
                                        } else if (ptstr.equals("1{1/2}")) {
                                            c.toughness = 1.5f;
                                        } else if (ptstr.equals("2{1/2}")) {
                                            c.toughness = 2.5f;
                                        } else if (ptstr.equals("3{1/2}")) {
                                            c.toughness = 3.5f;
                                        }
                                    }
                                } catch (Exception e) {
                                    reader.skipValue();
                                }
                            } else if (s2.equalsIgnoreCase("i")) { // loyalty
                                try {
                                    c.loyalty = reader.nextInt();
                                } catch (Exception e) {
                                    reader.skipValue();
                                }
                            } else if (s2.equalsIgnoreCase("j")) { // ability
                                c.ability = reader.nextString();
                            } else if (s2.equalsIgnoreCase("k")) { // flavor
                                c.flavor = reader.nextString();
                            } else if (s2.equalsIgnoreCase("l")) { // artist
                                c.artist = reader.nextString();
                            } else if (s2.equalsIgnoreCase("m")) { // number
                                try {
                                    c.number = reader.nextString();
                                } catch (Exception e) {
                                    reader.skipValue();
                                }
                            } else if (s2.equalsIgnoreCase("n")) { // color
                                c.color = reader.nextString();
                            } else if (s2.equalsIgnoreCase("x")) { // multiverse id
                                c.multiverse_id = reader.nextInt();
                            }
                        }
                        mDbHelper.createCard(c);
                        elementsParsed++;
                        progReport.reportJsonCardProgress(new String[] { dialogText, dialogText,
                                "" + (int) Math.round(100 * elementsParsed / (double) numTotalElements) });
                        reader.endObject();
                    }
                    reader.endArray();
                }
            }
            reader.endObject();
        }
        if (s.equalsIgnoreCase("w")) { // num_cards
            numTotalElements = reader.nextInt();
        }
    }
    reader.endObject();
    reader.close();

    // Add the set information to the database AFTER adding the cards.
    // This way if the update fails while parsing cards, the database won't think it has the set already, when it doesnt.
    for (MtgSet set : setsAdded) {
        mDbHelper.createSet(set);
    }

    return;
}

From source file:com.gelakinetic.mtgfam.helpers.JsonParser.java

License:Open Source License

public ArrayList<String[]> readUpdateJsonStream(PreferencesAdapter prefAdapter)
        throws MalformedURLException, IOException {
    ArrayList<String[]> patchInfo = new ArrayList<String[]>();
    URL update;// w ww . j  a v a  2s  .c  om
    String label;
    String label2;

    update = new URL("https://sites.google.com/site/mtgfamiliar/manifests/patches.json");
    InputStreamReader isr = new InputStreamReader(update.openStream(), "ISO-8859-1");
    JsonReader reader = new JsonReader(isr);

    reader.beginObject();
    while (reader.hasNext()) {
        label = reader.nextName();

        if (label.equals("Date")) {
            String lastUpdate = prefAdapter.getLastUpdate();
            currentPatchDate = reader.nextString();
            if (lastUpdate.equals(currentPatchDate)) {
                reader.close();
                return null;
            }
        } else if (label.equals("Patches")) {
            reader.beginArray();
            while (reader.hasNext()) {
                reader.beginObject();
                String[] setdata = new String[3];
                while (reader.hasNext()) {
                    label2 = reader.nextName();
                    if (label2.equals("Name")) {
                        setdata[0] = reader.nextString();
                    } else if (label2.equals("URL")) {
                        setdata[1] = reader.nextString();
                    } else if (label2.equals("Code")) {
                        setdata[2] = reader.nextString();
                    }
                }
                patchInfo.add(setdata);
                reader.endObject();
            }
            reader.endArray();
        }
    }
    reader.endObject();
    reader.close();

    return patchInfo;
}