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

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

Introduction

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

Prototype

public String nextString() throws IOException 

Source Link

Document

Returns the com.google.gson.stream.JsonToken#STRING string value of the next token, consuming it.

Usage

From source file:com.javacreed.examples.gson.part4.BookTypeAdapter.java

License:Apache License

@Override
public Book read(final JsonReader in) throws IOException {
    final Book book = new Book();

    in.beginObject();/*from   w w  w. j  ava  2 s.c om*/
    while (in.hasNext()) {
        switch (in.nextName()) {
        case "isbn":
            book.setIsbn(in.nextString());
            break;
        case "title":
            book.setTitle(in.nextString());
            break;
        case "authors":
            in.beginArray();
            final List<Author> authors = new ArrayList<>();
            while (in.hasNext()) {
                in.beginObject();
                final Author author = new Author();
                while (in.hasNext()) {
                    switch (in.nextName()) {
                    case "id":
                        author.setId(in.nextInt());
                        break;
                    case "name":
                        author.setName(in.nextString());
                        break;
                    }
                }
                authors.add(author);
                in.endObject();
            }
            book.setAuthors(authors.toArray(new Author[authors.size()]));
            in.endArray();
            break;
        }
    }
    in.endObject();

    return book;
}

From source file:com.magnet.mmx.server.plugin.mmxmgmt.apns.APNSPayloadInfo.java

License:Apache License

private static APNSPayloadInfo readMMXObject(JsonReader reader) throws IOException {
    APNSPayloadInfo info = new APNSPayloadInfo();
    reader.beginObject();//from   w ww .  j  ava2s  . c o m
    while (reader.hasNext()) {
        String name = reader.nextName();
        if (name.equals(Constants.PAYLOAD_ID_KEY)) {
            info.messageId = reader.nextString();
        } else if (name.equals(Constants.PAYLOAD_TYPE_KEY)) {
            info.type = reader.nextString();
        } else {
            reader.skipValue();
        }
    }
    reader.endObject();
    return info;
}

From source file:com.magnet.plugin.models.ExamplesManifest.java

License:Open Source License

public ExamplesManifest(String json) throws IOException {
    this.examples = new HashMap<String, ExampleResource>();

    JsonReader reader = new JsonReader(new StringReader(json));
    reader.beginObject();/*from   www.  ja v a 2 s .  c  o  m*/
    while (reader.hasNext()) {
        String name = reader.nextName();

        // single example
        reader.beginObject();
        String file = null;
        String description = null;
        while (reader.hasNext()) {
            String key = reader.nextName();
            if (key.equals(FILE_KEY)) {
                file = reader.nextString();
            } else if (key.equals(DESCRIPTION_KEY)) {
                description = reader.nextString();
            }
        }
        reader.endObject();
        examples.put(name, new ExampleResource(name, file, description));
    }

}

From source file:com.mbed.lwm2m.json.NumberTypeAdapter.java

License:Open Source License

@Override
public Number read(JsonReader reader) throws IOException {
    String string = reader.nextString();
    Number number;//w w  w. j  a v  a 2  s.c o  m

    if (string.indexOf('.') == -1) {
        number = Integer.parseInt(string);
    } else {
        number = Double.parseDouble(string);
    }

    return number;
}

From source file:com.miki.webapp.webservicerestful.MikiWsJsonTools.java

public Map<String, String> lecture(List<String> listeAttribut, final JsonReader reader) throws IOException {
    Map<String, String> resultat = new HashMap<>();
    reader.beginObject();/*w w  w.  j  a  v a2 s.c o m*/
    while (reader.hasNext()) {
        final String name = reader.nextName();
        int iter = 0;
        for (String attribut : listeAttribut) {
            if (name.equals(attribut)) {
                if (reader.peek() == JsonToken.NULL) {
                    reader.nextNull();
                    resultat.put(attribut, null);
                } else {
                    resultat.put(attribut, reader.nextString());
                }
            } else {
                iter++;
            }
        }

        if (iter == listeAttribut.size()) {
            reader.skipValue();
        }
    }
    reader.endObject();
    return resultat;
}

From source file:com.miki.webapp.webservicerestful.MikiWsJsonTools.java

/**
 * Cette methode permet de renvoyer un map contenant les attributs(pass en parametre) et leurs valeurs
 * @param urlwebservice url du webservice (faire reference  un renvoie d'un
 * seul objet)//from  ww w.j  av  a2s.  c om
 * @param listeAttribut une liste des attributs a chercher dans le Json
 * @return un Map
 */
public Map<String, String> getObjetLectureJsonFromUrl(String urlwebservice, List<String> listeAttribut) {
    try {
        if (!listeAttribut.isEmpty()) {
            String json = MikiWsTools.get(urlwebservice);
            final JsonReader reader = new JsonReader(new StringReader(json));
            Map<String, String> resultat = new HashMap<>();
            reader.beginObject();
            while (reader.hasNext()) {
                final String name = reader.nextName();
                int iter = 0;
                for (String attribut : listeAttribut) {
                    if (name.equals(attribut)) {
                        if (reader.peek() == JsonToken.NULL) {
                            reader.nextNull();
                            resultat.put(attribut, null);
                        } else {
                            resultat.put(attribut, reader.nextString());
                        }
                    } else {
                        iter++;
                    }
                }
                if (iter == listeAttribut.size()) {
                    reader.skipValue();
                }
            }
            reader.endObject();
            return resultat;
        } else {
            return null;
        }

    } catch (IOException e) {
        e.printStackTrace();
        System.out.println("Echec de l'opration");
        return null;
    }
}

From source file:com.miki.webapp.webservicerestful.MikiWsJsonTools.java

/**
 * Cette methode permet de renvoyer un map contenant les attributs(pass en parametre) et leurs valeurs
 * @param json les donnes en format json
 * @param listeAttribut une liste des attributs a chercher dans le Json
 * @return un Map//from w  w w  .  java2s.c o  m
 */
public Map<String, String> getObjetLectureJson(String json, List<String> listeAttribut) {
    try {
        if (!listeAttribut.isEmpty()) {
            final JsonReader reader = new JsonReader(new StringReader(json));
            Map<String, String> resultat = new HashMap<>();
            reader.beginObject();
            while (reader.hasNext()) {
                final String name = reader.nextName();
                int iter = 0;
                for (String attribut : listeAttribut) {
                    if (name.equals(attribut)) {
                        if (reader.peek() == JsonToken.NULL) {
                            reader.nextNull();
                            resultat.put(attribut, null);
                        } else {
                            resultat.put(attribut, reader.nextString());
                        }
                    } else {
                        iter++;
                    }
                }
                if (iter == listeAttribut.size()) {
                    reader.skipValue();
                }
            }
            reader.endObject();
            return resultat;
        } else {
            return null;
        }

    } catch (IOException e) {
        e.printStackTrace();
        System.out.println("Echec de l'opration");
        return null;
    }
}

From source file:com.netease.flume.taildirSource.ReliableTaildirEventReader.java

License:Apache License

/**
 * Load a position file which has the last read position of each file. If the position file exists, update tailFiles
 * mapping./*  w  w w  .j  av a2  s .c om*/
 */
public void loadPositionFile(String filePath) {
    Long inode, pos;
    String path;
    FileReader fr = null;
    JsonReader jr = null;
    try {
        fr = new FileReader(filePath);
        jr = new JsonReader(fr);
        jr.beginArray();
        while (jr.hasNext()) {
            inode = null;
            pos = null;
            path = null;
            jr.beginObject();
            while (jr.hasNext()) {
                switch (jr.nextName()) {
                case "inode":
                    inode = jr.nextLong();
                    break;
                case "pos":
                    pos = jr.nextLong();
                    break;
                case "file":
                    path = jr.nextString();
                    break;
                }
            }
            jr.endObject();

            for (Object v : Arrays.asList(inode, pos, path)) {
                Preconditions.checkNotNull(v, "Detected missing value in position file. " + "inode: " + inode
                        + ", pos: " + pos + ", path: " + path);
            }
            TailFile tf = tailFiles.get(inode);
            if (tf != null && tf.updatePos(path, inode, pos)) {
                tailFiles.put(inode, tf);
            } else {
                logger.info("Missing file: " + path + ", inode: " + inode + ", pos: " + pos);
            }
        }
        jr.endArray();
    } catch (FileNotFoundException e) {
        logger.info("File not found: " + filePath + ", not updating position");
    } catch (IOException e) {
        logger.error("Failed loading positionFile: " + filePath, e);
    } finally {
        try {
            if (fr != null)
                fr.close();
            if (jr != null)
                jr.close();
        } catch (IOException e) {
            logger.error("Error: " + e.getMessage(), e);
        }
    }
}

From source file:com.nit.async.DeckTask.java

License:Open Source License

private TaskData doInBackgroundImportReplace(TaskData... params) {
    // Log.i(AnkiDroidApp.TAG, "doInBackgroundImportReplace");
    Collection col = params[0].getCollection();
    String path = params[0].getString();
    Resources res = AnkiDroidApp.getInstance().getBaseContext().getResources();

    // extract the deck from the zip file
    String fileDir = AnkiDroidApp.getCurrentAnkiDroidDirectory() + "/tmpzip";
    File dir = new File(fileDir);
    if (dir.exists()) {
        BackupManager.removeDir(dir);//from www .j  a v  a 2s . c om
    }

    publishProgress(new TaskData(res.getString(R.string.import_unpacking)));
    // from anki2.py
    String colFile = fileDir + "/collection.anki2";
    ZipFile zip;
    try {
        zip = new ZipFile(new File(path));
    } catch (IOException e) {
        Log.e(AnkiDroidApp.TAG, "doInBackgroundImportReplace - Error while unzipping: ", e);
        AnkiDroidApp.saveExceptionReportFile(e, "doInBackgroundImportReplace0");
        return new TaskData(false);
    }
    if (!Utils.unzipFiles(zip, fileDir, new String[] { "collection.anki2", "media" }, null)
            || !(new File(colFile)).exists()) {
        return new TaskData(-2, null, false);
    }

    Collection tmpCol = null;
    try {
        tmpCol = Storage.Collection(colFile);
        if (!tmpCol.validCollection()) {
            tmpCol.close();
            return new TaskData(-2, null, false);
        }
    } finally {
        if (tmpCol != null) {
            tmpCol.close();
        }
    }

    publishProgress(new TaskData(res.getString(R.string.importing_collection)));
    String colPath;
    if (col != null) {
        // unload collection and trigger a backup
        colPath = col.getPath();
        AnkiDroidApp.closeCollection(true);
        BackupManager.performBackup(colPath, true);
    }
    // overwrite collection
    colPath = AnkiDroidApp.getCollectionPath();
    File f = new File(colFile);
    f.renameTo(new File(colPath));
    int addedCount = -1;
    try {
        col = AnkiDroidApp.openCollection(colPath);

        // because users don't have a backup of media, it's safer to import new
        // data and rely on them running a media db check to get rid of any
        // unwanted media. in the future we might also want to duplicate this step
        // import media
        HashMap<String, String> nameToNum = new HashMap<String, String>();
        HashMap<String, String> numToName = new HashMap<String, String>();
        File mediaMapFile = new File(fileDir, "media");
        if (mediaMapFile.exists()) {
            JsonReader jr = new JsonReader(new FileReader(mediaMapFile));
            jr.beginObject();
            String name;
            String num;
            while (jr.hasNext()) {
                num = jr.nextName();
                name = jr.nextString();
                nameToNum.put(name, num);
                numToName.put(num, name);
            }
            jr.endObject();
            jr.close();
        }
        String mediaDir = col.getMedia().getDir();
        int total = nameToNum.size();
        int i = 0;
        for (Map.Entry<String, String> entry : nameToNum.entrySet()) {
            String file = entry.getKey();
            String c = entry.getValue();
            File of = new File(mediaDir, file);
            if (!of.exists()) {
                Utils.unzipFiles(zip, mediaDir, new String[] { c }, numToName);
            }
            ++i;
            publishProgress(new TaskData(res.getString(R.string.import_media_count, (i + 1) * 100 / total)));
        }
        zip.close();
        // delete tmp dir
        BackupManager.removeDir(dir);

        publishProgress(new TaskData(res.getString(R.string.import_update_counts)));
        // Update the counts
        DeckTask.TaskData result = doInBackgroundLoadDeckCounts(new TaskData(col));
        if (result == null) {
            return null;
        }
        return new TaskData(addedCount, result.getObjArray(), true);
    } catch (RuntimeException e) {
        Log.e(AnkiDroidApp.TAG, "doInBackgroundImportReplace - RuntimeException: ", e);
        AnkiDroidApp.saveExceptionReportFile(e, "doInBackgroundImportReplace1");
        return new TaskData(false);
    } catch (FileNotFoundException e) {
        Log.e(AnkiDroidApp.TAG, "doInBackgroundImportReplace - FileNotFoundException: ", e);
        AnkiDroidApp.saveExceptionReportFile(e, "doInBackgroundImportReplace2");
        return new TaskData(false);
    } catch (IOException e) {
        Log.e(AnkiDroidApp.TAG, "doInBackgroundImportReplace - IOException: ", e);
        AnkiDroidApp.saveExceptionReportFile(e, "doInBackgroundImportReplace3");
        return new TaskData(false);
    }
}

From source file:com.nit.libanki.importer.Anki2Importer.java

License:Open Source License

public int run(boolean currDeckImport) {
    publishProgress(false, 0, 0, false);
    try {/*  w  w w . j  av a2 s . co  m*/
        // extract the deck from the zip file
        String tempDir = AnkiDroidApp.getCurrentAnkiDroidDirectory() + "/tmpzip";
        // from anki2.py
        String colFile = tempDir + "/collection.anki2";
        if (!Utils.unzipFiles(mZip, tempDir, new String[] { "collection.anki2", "media" }, null)
                || !(new File(colFile)).exists() || !Storage.Collection(colFile).validCollection()) {
            return -2;
        }

        // we need the media dict in advance, and we'll need a map of fname number to use during the import
        File mediaMapFile = new File(tempDir, "media");
        HashMap<String, String> numToName = new HashMap<String, String>();
        if (mediaMapFile.exists()) {
            JsonReader jr = new JsonReader(new FileReader(mediaMapFile));
            jr.beginObject();
            String name;
            String num;
            while (jr.hasNext()) {
                num = jr.nextName();
                name = jr.nextString();
                nameToNum.put(name, num);
                numToName.put(num, name);
            }
            jr.endObject();
            jr.close();
        }

        _prepareFiles(colFile);
        publishProgress(true, 0, 0, false);
        int cnt = -1;
        try {
            cnt = _import(currDeckImport);
        } finally {
            // do not close collection but close only db (in order not to confuse access counting in storage.java
            // Note that the media database is still open and needs to be closed below.
            AnkiDatabaseManager.closeDatabase(mSrc.getPath());
        }
        // import static media
        String mediaDir = mCol.getMedia().getDir();
        if (nameToNum.size() != 0) {
            for (Map.Entry<String, String> entry : nameToNum.entrySet()) {
                String file = entry.getKey();
                String c = entry.getValue();
                if (!file.startsWith("_") && !file.startsWith("latex-")) {
                    continue;
                }
                File of = new File(mediaDir, file);
                if (!of.exists()) {
                    Utils.unzipFiles(mZip, mediaDir, new String[] { c }, numToName);
                }
            }
        }
        mZip.close();
        mSrc.getMedia().close();
        // delete tmp dir
        File dir = new File(tempDir);
        BackupManager.removeDir(dir);
        publishProgress(true, 100, 100, true);
        return cnt;
    } catch (RuntimeException e) {
        Log.e(AnkiDroidApp.TAG, "RuntimeException while importing ", e);
        return -1;
    } catch (IOException e) {
        Log.e(AnkiDroidApp.TAG, "IOException while importing ", e);
        return -1;
    }
}