Example usage for com.fasterxml.jackson.core JsonParser nextToken

List of usage examples for com.fasterxml.jackson.core JsonParser nextToken

Introduction

In this page you can find the example usage for com.fasterxml.jackson.core JsonParser nextToken.

Prototype

public abstract JsonToken nextToken() throws IOException, JsonParseException;

Source Link

Document

Main iteration method, which will advance stream enough to determine type of the next token, if any.

Usage

From source file:data.DefaultExchanger.java

private void importDataFromArray(JsonParser parser, JdbcTemplate jdbcTemplate, int batchSize)
        throws IOException {
    int importedNodesCount = 0;
    final List<JsonNode> nodes = new ArrayList<>();
    while (parser.nextToken() != JsonToken.END_ARRAY) {
        final JsonNode node = parser.readValueAsTree();
        nodes.add(node);//w  w w .  j  a v  a 2  s  . c o m
        if (nodes.size() == batchSize) {
            importedNodesCount += batchUpdate(jdbcTemplate, nodes).length;
            nodes.clear();
        }
    }
    if (nodes.size() > 0) {
        importedNodesCount += batchUpdate(jdbcTemplate, nodes).length;
    }
    play.Logger.info("imported {{}} {}", importedNodesCount, getTable());
}

From source file:org.oscim.utils.overpass.OverpassAPIReader.java

private void parseWay(JsonParser jp) throws JsonParseException, IOException {

    long id = 0;//  w  w  w. j  a v  a  2s  .  com
    TagSet tags = null;
    ArrayList<OsmNode> wayNodes = new ArrayList<OsmNode>();

    while (jp.nextToken() != JsonToken.END_OBJECT) {

        String name = jp.getCurrentName();
        jp.nextToken();

        if ("id".equals(name))
            id = jp.getLongValue();

        else if ("nodes".equals(name)) {
            while (jp.nextToken() != JsonToken.END_ARRAY) {
                Long nodeId = Long.valueOf(jp.getLongValue());

                OsmNode node = nodesById.get(nodeId);
                if (node != null)
                    // log("missing node " + nodeId);
                    // else
                    wayNodes.add(node);
            }
        } else if ("tags".equals(name))
            tags = parseTags(jp);
    }

    // log("way: "+ id + " " + wayNodes.size());
    OsmWay way = new OsmWay(tags, id, wayNodes);
    ownWays.add(way);
    waysById.put(Long.valueOf(id), way);
}

From source file:io.debezium.document.JacksonReader.java

private Document parseDocument(JsonParser parser, boolean nested) throws IOException {
    // Iterate over the fields in the top-level document ...
    BasicDocument doc = new BasicDocument();
    JsonToken token = null;//from www .  j a v  a2s .  c o m
    if (!nested) {
        // We expect the START_OBJECT token ...
        token = parser.nextToken();
        if (!nested && token != JsonToken.START_OBJECT) {
            throw new IOException("Expected data to start with an Object, but was " + token);
        }
    }
    String fieldName = null;
    token = parser.nextToken();
    while (token != JsonToken.END_OBJECT) {
        switch (token) {
        case FIELD_NAME:
            fieldName = parser.getCurrentName();
            break;
        case START_OBJECT:
            doc.setDocument(fieldName, parseDocument(parser, true));
            break;
        case START_ARRAY:
            doc.setArray(fieldName, parseArray(parser, true));
            break;
        case VALUE_STRING:
            doc.setString(fieldName, parser.getValueAsString());
            break;
        case VALUE_TRUE:
            doc.setBoolean(fieldName, true);
            break;
        case VALUE_FALSE:
            doc.setBoolean(fieldName, false);
            break;
        case VALUE_NULL:
            doc.setNull(fieldName);
            break;
        case VALUE_NUMBER_FLOAT:
        case VALUE_NUMBER_INT:
            switch (parser.getNumberType()) {
            case FLOAT:
                doc.setNumber(fieldName, parser.getFloatValue());
                break;
            case DOUBLE:
                doc.setNumber(fieldName, parser.getDoubleValue());
                break;
            case BIG_DECIMAL:
                doc.setNumber(fieldName, parser.getDecimalValue());
                break;
            case INT:
                doc.setNumber(fieldName, parser.getIntValue());
                break;
            case LONG:
                doc.setNumber(fieldName, parser.getLongValue());
                break;
            case BIG_INTEGER:
                doc.setNumber(fieldName, parser.getBigIntegerValue());
                break;
            }
            break;
        case VALUE_EMBEDDED_OBJECT:
            // disregard this, since it's an extension ...
            break;
        case NOT_AVAILABLE:
            throw new JsonParseException("Non-blocking parsers are not supported", parser.getCurrentLocation());
        case END_ARRAY:
            throw new JsonParseException("Not expecting an END_ARRAY token", parser.getCurrentLocation());
        case END_OBJECT:
            throw new JsonParseException("Not expecting an END_OBJECT token", parser.getCurrentLocation());
        }
        token = parser.nextToken();
    }
    return doc;
}

From source file:org.gvnix.web.json.DataBinderDeserializer.java

/**
 * Deserializes JSON object into Map<String, String> format to use it in a
 * Spring {@link DataBinder}.//from w w  w  .j a  v a 2s  .co m
 * <p/>
 * Iterate over every object's property and delegates on
 * {@link #readField(JsonParser, DeserializationContext, JsonToken, String)}
 * 
 * @param parser JSON parser
 * @param ctxt context
 * @param prefix object DataBinder path
 * @return property values
 * @throws IOException
 * @throws JsonProcessingException
 */
public Map<String, String> readObject(JsonParser parser, DeserializationContext ctxt, String prefix)
        throws IOException, JsonProcessingException {
    JsonToken t = parser.getCurrentToken();

    if (t == JsonToken.START_OBJECT) {
        t = parser.nextToken();
        // Skip it to locate on first object data token
    }

    // Deserialize object properties
    Map<String, String> deserObj = new HashMap<String, String>();
    for (; t != JsonToken.END_OBJECT; t = parser.nextToken()) {
        Map<String, String> field = readField(parser, ctxt, t, prefix);
        deserObj.putAll(field);
    }
    return deserObj;
}

From source file:org.gvnix.web.json.DataBinderDeserializer.java

/**
 * Deserializes JSON array into Map<String, String> format to use it in a
 * Spring {@link DataBinder}.//w ww  .  j  a va  2 s.c  o m
 * <p/>
 * Iterate over every array's item to generate a prefix for property names
 * on DataBinder style (
 * <em>{prefix}[{index}].<em>) and delegates on {@link #readField(JsonParser, DeserializationContext, JsonToken, String)}
 * 
 * @param parser JSON parser
 * @param ctxt context
 * @param prefix array dataBinder path
 * @return
 * @throws IOException
 * @throws JsonProcessingException
 */
protected Map<String, String> readArray(JsonParser parser, DeserializationContext ctxt, String prefix)
        throws IOException, JsonProcessingException {
    JsonToken t = parser.getCurrentToken();

    if (t == JsonToken.START_ARRAY) {
        t = parser.nextToken();
        // Skip it to locate on first array data token
    }

    // Deserialize array properties
    int i = 0;
    Map<String, String> deserObj = new HashMap<String, String>();
    for (; t != JsonToken.END_ARRAY; t = parser.nextToken()) {
        // Property name must include prefix this way:
        // degrees[0].description
        Map<String, String> field = readField(parser, ctxt, t,
                prefix.concat("[").concat(Integer.toString(i++)).concat("]."));
        deserObj.putAll(field);
    }
    return deserObj;
}

From source file:com.msopentech.odatajclient.engine.metadata.edm.EntityContainerDeserializer.java

@Override
protected AbstractEntityContainer doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
        throws IOException, JsonProcessingException {

    final AbstractEntityContainer entityContainer = ODataVersion.V3 == client.getWorkingVersion()
            ? new com.msopentech.odatajclient.engine.metadata.edm.v3.EntityContainer()
            : new com.msopentech.odatajclient.engine.metadata.edm.v4.EntityContainer();

    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
        final JsonToken token = jp.getCurrentToken();
        if (token == JsonToken.FIELD_NAME) {
            if ("Name".equals(jp.getCurrentName())) {
                entityContainer.setName(jp.nextTextValue());
            } else if ("Extends".equals(jp.getCurrentName())) {
                entityContainer.setExtends(jp.nextTextValue());
            } else if ("LazyLoadingEnabled".equals(jp.getCurrentName())) {
                entityContainer.setLazyLoadingEnabled(BooleanUtils.toBoolean(jp.nextTextValue()));
            } else if ("IsDefaultEntityContainer".equals(jp.getCurrentName())) {
                entityContainer.setDefaultEntityContainer(BooleanUtils.toBoolean(jp.nextTextValue()));
            } else if ("EntitySet".equals(jp.getCurrentName())) {
                jp.nextToken();//from   w w  w. j  a  v  a2s . co m
                if (entityContainer instanceof com.msopentech.odatajclient.engine.metadata.edm.v3.EntityContainer) {
                    ((com.msopentech.odatajclient.engine.metadata.edm.v3.EntityContainer) entityContainer)
                            .getEntitySets().add(jp.getCodec().readValue(jp,
                                    com.msopentech.odatajclient.engine.metadata.edm.v3.EntitySet.class));
                } else {
                    ((com.msopentech.odatajclient.engine.metadata.edm.v4.EntityContainer) entityContainer)
                            .getEntitySets().add(jp.getCodec().readValue(jp,
                                    com.msopentech.odatajclient.engine.metadata.edm.v4.EntitySet.class));
                }
            } else if ("AssociationSet".equals(jp.getCurrentName())) {
                jp.nextToken();
                ((com.msopentech.odatajclient.engine.metadata.edm.v3.EntityContainer) entityContainer)
                        .getAssociationSets().add(jp.getCodec().readValue(jp, AssociationSet.class));
            } else if ("Singleton".equals(jp.getCurrentName())) {
                jp.nextToken();
                ((com.msopentech.odatajclient.engine.metadata.edm.v4.EntityContainer) entityContainer)
                        .getSingletons().add(jp.getCodec().readValue(jp, Singleton.class));
            } else if ("ActionImport".equals(jp.getCurrentName())) {
                jp.nextToken();
                ((com.msopentech.odatajclient.engine.metadata.edm.v4.EntityContainer) entityContainer)
                        .getActionImports().add(jp.getCodec().readValue(jp, ActionImport.class));
            } else if ("FunctionImport".equals(jp.getCurrentName())) {
                jp.nextToken();
                if (entityContainer instanceof com.msopentech.odatajclient.engine.metadata.edm.v3.EntityContainer) {
                    ((com.msopentech.odatajclient.engine.metadata.edm.v3.EntityContainer) entityContainer)
                            .getFunctionImports().add(jp.getCodec().readValue(jp,
                                    com.msopentech.odatajclient.engine.metadata.edm.v3.FunctionImport.class));
                } else {
                    ((com.msopentech.odatajclient.engine.metadata.edm.v4.EntityContainer) entityContainer)
                            .getFunctionImports().add(jp.getCodec().readValue(jp,
                                    com.msopentech.odatajclient.engine.metadata.edm.v4.FunctionImport.class));
                }
            } else if ("Annotation".equals(jp.getCurrentName())) {
                jp.nextToken();
                ((com.msopentech.odatajclient.engine.metadata.edm.v4.EntityContainer) entityContainer)
                        .setAnnotation(jp.getCodec().readValue(jp, Annotation.class));
            }
        }
    }

    return entityContainer;
}

From source file:com.google.openrtb.json.OpenRtbJsonExtComplexReader.java

@SuppressWarnings("unchecked")
private void readSingle(EB msg, JsonParser par, XB ext) throws IOException {
    if (isJsonObject) {
        startObject(par);//from w w  w.j a  v  a 2 s. c om
    }
    boolean extRead = false;
    JsonToken tokLast = par.getCurrentToken();
    JsonLocation locLast = par.getCurrentLocation();
    while (endObject(par)) {
        read(ext, par);
        if (par.getCurrentToken() != tokLast || !par.getCurrentLocation().equals(locLast)) {
            extRead = true;
            par.nextToken();
            tokLast = par.getCurrentToken();
            locLast = par.getCurrentLocation();
        } else {
            break;
        }
    }
    if (extRead) {
        msg.setExtension(key, ext.build());
    }
    if (isJsonObject) {
        par.nextToken();
    }
}

From source file:org.seedstack.seed.core.internal.data.DataManagerImpl.java

@Override
public void importData(InputStream inputStream, String acceptGroup, String acceptName, boolean clear) {
    Set<DataImporter<Object>> usedDataImporters = new HashSet<>();

    try {//from  w w  w .  java2 s . co m
        ParsingState state = ParsingState.START;
        String group = null;
        String name = null;
        JsonParser jsonParser = this.jsonFactory
                .createParser(new InputStreamReader(inputStream, Charset.forName(UTF_8)));
        JsonToken jsonToken = jsonParser.nextToken();

        while (jsonToken != null) {
            switch (state) {
            case START:
                if (jsonToken == JsonToken.START_ARRAY) {
                    state = ParsingState.DEFINITION_START;
                } else {
                    throwParsingError(jsonParser.getCurrentLocation(), "start array expected");
                }

                break;
            case DEFINITION_START:
                if (jsonToken == JsonToken.START_OBJECT) {
                    state = ParsingState.DEFINITION_GROUP;
                } else {
                    throwParsingError(jsonParser.getCurrentLocation(), "start object expected");
                }

                break;
            case DEFINITION_GROUP:
                if (jsonToken == JsonToken.FIELD_NAME && GROUP.equals(jsonParser.getCurrentName())) {
                    group = jsonParser.nextTextValue();
                    state = ParsingState.DEFINITION_NAME;
                } else {
                    throwParsingError(jsonParser.getCurrentLocation(), "group field expected");
                }

                break;
            case DEFINITION_NAME:
                if (jsonToken == JsonToken.FIELD_NAME && NAME.equals(jsonParser.getCurrentName())) {
                    name = jsonParser.nextTextValue();
                    state = ParsingState.DEFINITION_ITEMS;
                } else {
                    throwParsingError(jsonParser.getCurrentLocation(), "name field expected");
                }

                break;
            case DEFINITION_ITEMS:
                if (jsonToken == JsonToken.FIELD_NAME && ITEMS.equals(jsonParser.getCurrentName())) {
                    usedDataImporters.add(consumeItems(jsonParser, group, name, acceptGroup, acceptName));
                    state = ParsingState.DEFINITION_END;
                } else {
                    throwParsingError(jsonParser.getCurrentLocation(), "items field expected");
                }

                break;
            case DEFINITION_END:
                if (jsonToken == JsonToken.END_OBJECT) {
                    group = null;
                    name = null;
                    state = ParsingState.END;
                } else {
                    throwParsingError(jsonParser.getCurrentLocation(), "end object expected");
                }

                break;
            case END:
                if (jsonToken == JsonToken.START_OBJECT) {
                    state = ParsingState.DEFINITION_GROUP;
                } else if (jsonToken == JsonToken.END_ARRAY) {
                    state = ParsingState.START;
                } else {
                    throwParsingError(jsonParser.getCurrentLocation(), "start object or end array expected");
                }

                break;
            default:
                throwParsingError(jsonParser.getCurrentLocation(), "unexpected parser state");
            }

            jsonToken = jsonParser.nextToken();
        }
    } catch (Exception e1) {
        for (DataImporter<Object> usedDataImporter : usedDataImporters) {
            try {
                usedDataImporter.rollback();
            } catch (Exception e2) {
                e2.initCause(e1);
                throw SeedException.wrap(e2, DataErrorCode.FAILED_TO_ROLLBACK_IMPORT).put(IMPORTER_CLASS,
                        usedDataImporter.getClass().getName());
            }
        }

        throw SeedException.wrap(e1, DataErrorCode.IMPORT_FAILED);
    }

    for (DataImporter<Object> usedDataImporter : usedDataImporters) {
        try {
            usedDataImporter.commit(clear);
        } catch (Exception e) {
            throw SeedException.wrap(e, DataErrorCode.FAILED_TO_COMMIT_IMPORT).put(IMPORTER_CLASS,
                    usedDataImporter.getClass().getName());
        }
    }
}

From source file:org.oscim.utils.overpass.OverpassAPIReader.java

private void parseRelation(JsonParser jp) throws JsonParseException, IOException {

    long id = 0;//from w w w.j a va 2  s  . c o m
    TagSet tags = null;
    ArrayList<TmpRelation> members = new ArrayList<TmpRelation>();

    while (jp.nextToken() != JsonToken.END_OBJECT) {

        String name = jp.getCurrentName();
        jp.nextToken();

        if ("id".equals(name))
            id = jp.getLongValue();

        else if ("members".equals(name)) {
            while (jp.nextToken() != JsonToken.END_ARRAY) {
                TmpRelation member = new TmpRelation();

                while (jp.nextToken() != JsonToken.END_OBJECT) {
                    name = jp.getCurrentName();
                    jp.nextToken();

                    if ("type".equals(name))
                        member.type = jp.getText();

                    else if ("ref".equals(name))
                        member.id = Long.valueOf(jp.getLongValue());

                    else if ("role".equals(name))
                        member.role = jp.getText();
                }
                members.add(member);
            }
        } else if ("tags".equals(name))
            tags = parseTags(jp);
    }

    OsmRelation relation = new OsmRelation(tags, id, members.size());
    ownRelations.add(relation);
    relationsById.put(Long.valueOf(id), relation);
    relationMembersForRelation.put(relation, members);
}

From source file:com.msopentech.odatajclient.engine.data.metadata.edm.EntityContainerDeserializer.java

@Override
protected AbstractEntityContainer doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
        throws IOException, JsonProcessingException {

    final AbstractEntityContainer entityContainer = ODataVersion.V3 == client.getWorkingVersion()
            ? new com.msopentech.odatajclient.engine.data.metadata.edm.v3.EntityContainer()
            : new com.msopentech.odatajclient.engine.data.metadata.edm.v4.EntityContainer();

    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
        final JsonToken token = jp.getCurrentToken();
        if (token == JsonToken.FIELD_NAME) {
            if ("Name".equals(jp.getCurrentName())) {
                entityContainer.setName(jp.nextTextValue());
            } else if ("Extends".equals(jp.getCurrentName())) {
                entityContainer.setExtends(jp.nextTextValue());
            } else if ("LazyLoadingEnabled".equals(jp.getCurrentName())) {
                entityContainer.setLazyLoadingEnabled(BooleanUtils.toBoolean(jp.nextTextValue()));
            } else if ("IsDefaultEntityContainer".equals(jp.getCurrentName())) {
                entityContainer.setDefaultEntityContainer(BooleanUtils.toBoolean(jp.nextTextValue()));
            } else if ("EntitySet".equals(jp.getCurrentName())) {
                jp.nextToken();//ww w  . j ava 2 s.co  m
                if (entityContainer instanceof com.msopentech.odatajclient.engine.data.metadata.edm.v3.EntityContainer) {
                    ((com.msopentech.odatajclient.engine.data.metadata.edm.v3.EntityContainer) entityContainer)
                            .getEntitySets().add(jp.getCodec().readValue(jp,
                                    com.msopentech.odatajclient.engine.data.metadata.edm.v3.EntitySet.class));
                } else {
                    ((com.msopentech.odatajclient.engine.data.metadata.edm.v4.EntityContainer) entityContainer)
                            .getEntitySets().add(jp.getCodec().readValue(jp,
                                    com.msopentech.odatajclient.engine.data.metadata.edm.v4.EntitySet.class));
                }
            } else if ("AssociationSet".equals(jp.getCurrentName())) {
                jp.nextToken();
                ((com.msopentech.odatajclient.engine.data.metadata.edm.v3.EntityContainer) entityContainer)
                        .getAssociationSets().add(jp.getCodec().readValue(jp, AssociationSet.class));
            } else if ("Singleton".equals(jp.getCurrentName())) {
                jp.nextToken();
                ((com.msopentech.odatajclient.engine.data.metadata.edm.v4.EntityContainer) entityContainer)
                        .getSingletons().add(jp.getCodec().readValue(jp, Singleton.class));
            } else if ("ActionImport".equals(jp.getCurrentName())) {
                jp.nextToken();
                ((com.msopentech.odatajclient.engine.data.metadata.edm.v4.EntityContainer) entityContainer)
                        .getActionImports().add(jp.getCodec().readValue(jp, ActionImport.class));
            } else if ("FunctionImport".equals(jp.getCurrentName())) {
                jp.nextToken();
                if (entityContainer instanceof com.msopentech.odatajclient.engine.data.metadata.edm.v3.EntityContainer) {
                    ((com.msopentech.odatajclient.engine.data.metadata.edm.v3.EntityContainer) entityContainer)
                            .getFunctionImports().add(jp.getCodec().readValue(jp,
                                    com.msopentech.odatajclient.engine.data.metadata.edm.v3.FunctionImport.class));
                } else {
                    ((com.msopentech.odatajclient.engine.data.metadata.edm.v4.EntityContainer) entityContainer)
                            .getFunctionImports().add(jp.getCodec().readValue(jp,
                                    com.msopentech.odatajclient.engine.data.metadata.edm.v4.FunctionImport.class));
                }
            } else if ("Annotation".equals(jp.getCurrentName())) {
                jp.nextToken();
                ((com.msopentech.odatajclient.engine.data.metadata.edm.v4.EntityContainer) entityContainer)
                        .setAnnotation(jp.getCodec().readValue(jp, Annotation.class));
            }
        }
    }

    return entityContainer;
}