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

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

Introduction

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

Prototype

public abstract double getDoubleValue() throws IOException, JsonParseException;

Source Link

Document

Numeric accessor that can be called when the current token is of type JsonToken#VALUE_NUMBER_FLOAT and it can be expressed as a Java double primitive type.

Usage

From source file:org.h2gis.drivers.geojson.GeoJsonReaderDriver.java

/**
 * Parses a GeoJSON coordinate array and returns a JTS coordinate. The first
 * token corresponds to the first X value. The last token correponds to the
 * end of the coordinate array "]"./*from   www  .  j  a  v  a  2s.co m*/
 *
 * Parsed syntax:
 *
 * 100.0, 0.0]
 *
 * @param jp
 * @throws IOException
 * @return Coordinate
 */
private Coordinate parseCoordinate(JsonParser jp) throws IOException {
    jp.nextToken();
    double x = jp.getDoubleValue();// VALUE_NUMBER_FLOAT
    jp.nextToken(); // second value
    double y = jp.getDoubleValue();
    Coordinate coord;
    //We look for a z value
    jp.nextToken();
    if (jp.getCurrentToken() == JsonToken.END_ARRAY) {
        coord = new Coordinate(x, y);
    } else {
        double z = jp.getDoubleValue();
        jp.nextToken(); // exit array
        coord = new Coordinate(x, y, z);
    }
    jp.nextToken();
    return coord;
}

From source file:org.example.testcases.BasicTypesDeSerializer.java

private BasicTypes readObject(JsonParser jp) throws IOException {
    BasicTypes basicTypes = new BasicTypes();
    for (JsonToken jsonToken; (jsonToken = jp.nextToken()) != null && (jsonToken != END_OBJECT);) {
        if (FIELD_NAME != jsonToken)
            continue;
        final String fieldName = jp.getCurrentName();
        switch (fieldName) {
        case "aString":
            jsonToken = jp.nextToken(); // read value
            basicTypes.aString = jp.getText();
            break;
        case "aBoolean":
            jsonToken = jp.nextToken(); // read value
            basicTypes.aBoolean = jp.getBooleanValue();
            break;
        case "aFloat":
            jsonToken = jp.nextToken(); // read value
            basicTypes.aFloat = jp.getFloatValue();
            break;
        case "aDouble":
            jsonToken = jp.nextToken(); // read value
            basicTypes.aDouble = jp.getDoubleValue();
            break;
        case "aInt":
            jsonToken = jp.nextToken(); // read value
            basicTypes.aInt = jp.getIntValue();
            break;
        case "aShort":
            jsonToken = jp.nextToken(); // read value
            basicTypes.aShort = jp.getShortValue();
            break;
        case "aByte":
            jsonToken = jp.nextToken(); // read value
            basicTypes.aByte = jp.getByteValue();
            break;
        default:/*from   w w  w  .j a  v  a2s  .  c  om*/
            // decide what to do;
        }
    }
    return basicTypes;
}

From source file:org.hyperledger.dropwizard.hocon.HoconDeserializer.java

protected ConfigList deserializeArray(JsonParser jp, DeserializationContext ctxt) throws IOException {

    List<Object> values = new ArrayList<>();

    JsonToken t;//from   w ww.  ja v  a  2 s. co m
    while ((t = jp.nextToken()) != JsonToken.END_ARRAY) {
        switch (t) {
        case START_ARRAY:
            values.add(deserializeArray(jp, ctxt).unwrapped());
            break;
        case START_OBJECT:
            values.add(deserializeObject(jp, ctxt).unwrapped());
            break;
        case VALUE_FALSE:
            values.add(false);
            break;
        case VALUE_TRUE:
            values.add(true);
            break;
        case VALUE_NULL:
            values.add(null);
            break;
        case VALUE_NUMBER_FLOAT:
            if (jp.getNumberType() == JsonParser.NumberType.BIG_DECIMAL) {
                values.add(jp.getDecimalValue());
            } else {
                values.add(jp.getDoubleValue());
            }
            break;
        case VALUE_NUMBER_INT:
            // very cumbersome... but has to be done
            switch (jp.getNumberType()) {
            case LONG:
                values.add(jp.getLongValue());
                break;
            case INT:
                values.add(jp.getIntValue());
                break;
            default:
                values.add(jp.getBigIntegerValue());
            }
            break;
        case VALUE_STRING:
            values.add(jp.getText());
            break;
        default:
            throw ctxt.mappingException(_valueClass);
        }
    }
    return ConfigValueFactory.fromIterable(values);
}

From source file:org.hyperledger.dropwizard.hocon.HoconDeserializer.java

protected ConfigObject deserializeObject(JsonParser jp, DeserializationContext ctxt) throws IOException {
    HashMap<String, Object> mapping = new HashMap<>();

    while (jp.nextToken() != JsonToken.END_OBJECT) {
        String name = jp.getCurrentName();
        JsonToken t = jp.nextToken();/*from  ww w .  j a  v a 2  s  . c o m*/
        switch (t) {
        case START_ARRAY:
            mapping.put(name, deserializeArray(jp, ctxt).unwrapped());
            break;
        case START_OBJECT:
            mapping.put(name, deserializeObject(jp, ctxt).unwrapped());
            break;
        case VALUE_FALSE:
            mapping.put(name, false);
            break;
        case VALUE_TRUE:
            mapping.put(name, true);
            break;
        case VALUE_NULL:
            mapping.put(name, null);
            break;
        case VALUE_NUMBER_FLOAT:
            if (jp.getNumberType() == JsonParser.NumberType.BIG_DECIMAL) {
                mapping.put(name, jp.getDecimalValue());
            } else {
                mapping.put(name, jp.getDoubleValue());
            }
            break;
        case VALUE_NUMBER_INT:
            // very cumbersome... but has to be done
            switch (jp.getNumberType()) {
            case LONG:
                mapping.put(name, jp.getLongValue());
                break;
            case INT:
                mapping.put(name, jp.getIntValue());
                break;
            default:
                mapping.put(name, jp.getBigIntegerValue());
            }
            break;
        case VALUE_STRING:
            mapping.put(name, jp.getText());
            break;
        case VALUE_EMBEDDED_OBJECT: {
            Object ob = jp.getEmbeddedObject();
            if (ob instanceof byte[]) {
                String b64 = ctxt.getBase64Variant().encode((byte[]) ob, false);
                mapping.put(name, b64);
                break;
            }
        }
        default:
            throw ctxt.mappingException(_valueClass);
        }
    }
    return ConfigValueFactory.fromMap(mapping);
}

From source file:com.joliciel.jochre.search.highlight.Snippet.java

private void read(JsonParser jsonParser) {
    try {//  www.j a v a  2  s  .c om
        if (jsonParser.getCurrentToken() != JsonToken.START_OBJECT)
            throw new RuntimeException("Expected START_OBJECT, but was " + jsonParser.getCurrentToken() + " at "
                    + jsonParser.getCurrentLocation());
        while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
            String fieldName = jsonParser.getCurrentName();

            if (fieldName.equals("docId")) {
                this.docId = jsonParser.nextIntValue(0);
            } else if (fieldName.equals("field")) {
                this.field = jsonParser.nextTextValue();
            } else if (fieldName.equals("start")) {
                this.startOffset = jsonParser.nextIntValue(0);
            } else if (fieldName.equals("end")) {
                this.endOffset = jsonParser.nextIntValue(0);
            } else if (fieldName.equals("score")) {
                jsonParser.nextValue();
                this.score = jsonParser.getDoubleValue();
                this.scoreCalculated = true;
            } else if (fieldName.equals("terms")) {
                if (jsonParser.nextToken() != JsonToken.START_ARRAY)
                    throw new RuntimeException("Expected START_ARRAY, but was " + jsonParser.getCurrentToken()
                            + " at " + jsonParser.getCurrentLocation());
                while (jsonParser.nextToken() != JsonToken.END_ARRAY) {
                    if (jsonParser.getCurrentToken() != JsonToken.START_OBJECT)
                        throw new RuntimeException("Expected START_OBJECT, but was "
                                + jsonParser.getCurrentToken() + " at " + jsonParser.getCurrentLocation());
                    int termDocId = docId;
                    String termField = field;
                    int termStart = 0;
                    int termEnd = 0;
                    int pageIndex = 0;
                    int imageIndex = 0;
                    double weight = 0.0;
                    while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
                        String termFieldName = jsonParser.getCurrentName();
                        if (termFieldName.equals("docId")) {
                            termDocId = jsonParser.nextIntValue(0);
                        } else if (termFieldName.equals("field")) {
                            termField = jsonParser.nextTextValue();
                        } else if (termFieldName.equals("start")) {
                            termStart = jsonParser.nextIntValue(0);
                        } else if (termFieldName.equals("end")) {
                            termEnd = jsonParser.nextIntValue(0);
                        } else if (termFieldName.equals("pageIndex")) {
                            pageIndex = jsonParser.nextIntValue(0);
                        } else if (termFieldName.equals("imageIndex")) {
                            imageIndex = jsonParser.nextIntValue(0);
                        } else if (termFieldName.equals("weight")) {
                            jsonParser.nextValue();
                            weight = jsonParser.getDoubleValue();
                        } else {
                            throw new RuntimeException("Unexpected term field name: " + termFieldName + " at "
                                    + jsonParser.getCurrentLocation());
                        }
                    }
                    HighlightTerm highlightTerm = new HighlightTerm(termDocId, termField, termStart, termEnd,
                            imageIndex, pageIndex);
                    highlightTerm.setWeight(weight);
                    this.highlightTerms.add(highlightTerm);
                }
            } else {
                throw new RuntimeException(
                        "Unexpected field name: " + fieldName + " at " + jsonParser.getCurrentLocation());
            }
        }
    } catch (JsonParseException e) {
        LOG.error(e);
        throw new RuntimeException(e);
    } catch (IOException e) {
        LOG.error(e);
        throw new RuntimeException(e);
    }
}

From source file:org.debezium.core.doc.JacksonReader.java

private Array parseArray(JsonParser parser) throws IOException {
    // Iterate over the fields in the top-level document ...
    BasicArray array = new BasicArray();
    JsonToken token = parser.nextToken();
    while (token != JsonToken.END_ARRAY) {
        switch (token) {
        case START_OBJECT:
            array.add(parseDocument(parser, true));
            break;
        case START_ARRAY:
            array.add(parseArray(parser));
            break;
        case VALUE_STRING:
            array.add(parser.getValueAsString());
            break;
        case VALUE_TRUE:
            array.add(true);//from  ww  w .java2s .  co m
            break;
        case VALUE_FALSE:
            array.add(false);
            break;
        case VALUE_NULL:
            array.addNull();
            break;
        case VALUE_NUMBER_FLOAT:
        case VALUE_NUMBER_INT:
            switch (parser.getNumberType()) {
            case FLOAT:
                array.add(parser.getFloatValue());
                break;
            case DOUBLE:
                array.add(parser.getDoubleValue());
                break;
            case BIG_DECIMAL:
                array.add(parser.getDecimalValue());
                break;
            case INT:
                array.add(parser.getIntValue());
                break;
            case LONG:
                array.add(parser.getLongValue());
                break;
            case BIG_INTEGER:
                array.add(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 FIELD_NAME:
            throw new JsonParseException("Not expecting a FIELD_NAME token", 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 array;
}

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

private Array parseArray(JsonParser parser, boolean nested) throws IOException {
    // Iterate over the values in the array ...
    BasicArray array = new BasicArray();
    JsonToken token = null;/*from w w w  .  j a v  a  2  s. co  m*/
    if (!nested) {
        // We expect the START_ARRAY token ...
        token = parser.nextToken();
        if (!nested && token != JsonToken.START_ARRAY) {
            throw new IOException("Expected data to start with an Array, but was " + token);
        }
    }
    token = parser.nextToken();
    while (token != JsonToken.END_ARRAY) {
        switch (token) {
        case START_OBJECT:
            array.add(parseDocument(parser, true));
            break;
        case START_ARRAY:
            array.add(parseArray(parser, true));
            break;
        case VALUE_STRING:
            array.add(parser.getValueAsString());
            break;
        case VALUE_TRUE:
            array.add(true);
            break;
        case VALUE_FALSE:
            array.add(false);
            break;
        case VALUE_NULL:
            array.addNull();
            break;
        case VALUE_NUMBER_FLOAT:
        case VALUE_NUMBER_INT:
            switch (parser.getNumberType()) {
            case FLOAT:
                array.add(parser.getFloatValue());
                break;
            case DOUBLE:
                array.add(parser.getDoubleValue());
                break;
            case BIG_DECIMAL:
                array.add(parser.getDecimalValue());
                break;
            case INT:
                array.add(parser.getIntValue());
                break;
            case LONG:
                array.add(parser.getLongValue());
                break;
            case BIG_INTEGER:
                array.add(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 FIELD_NAME:
            throw new JsonParseException("Not expecting a FIELD_NAME token", 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 array;
}

From source file:com.tage.calcite.adapter.druid.DruidConnectionImpl.java

private void parseField(List<String> fieldNames, List<Primitive> fieldTypes, Row.RowBuilder rowBuilder,
        JsonParser parser) throws IOException {
    final String fieldName = parser.getCurrentName();

    // Move to next token, which is name's value
    JsonToken token = parser.nextToken();
    int i = fieldNames.indexOf(fieldName);
    if (i < 0) {
        return;//ww  w.j av  a2s .  com
    }
    switch (token) {
    case VALUE_NUMBER_INT:
    case VALUE_NUMBER_FLOAT:
        Primitive type = fieldTypes.get(i);
        if (type == null) {
            if (token == JsonToken.VALUE_NUMBER_INT) {
                type = Primitive.INT;
            } else {
                type = Primitive.FLOAT;
            }
        }
        switch (type) {
        case BYTE:
            rowBuilder.set(i, parser.getIntValue());
            break;
        case SHORT:
            rowBuilder.set(i, parser.getShortValue());
            break;
        case INT:
            rowBuilder.set(i, parser.getIntValue());
            break;
        case LONG:
            rowBuilder.set(i, parser.getLongValue());
            break;
        case FLOAT:
            rowBuilder.set(i, parser.getFloatValue());
            break;
        case DOUBLE:
            rowBuilder.set(i, parser.getDoubleValue());
            break;
        }
        break;
    case VALUE_TRUE:
        rowBuilder.set(i, true);
        break;
    case VALUE_FALSE:
        rowBuilder.set(i, false);
        break;
    case VALUE_NULL:
        break;
    default:
        rowBuilder.set(i, parser.getText());
    }
}

From source file:org.debezium.core.doc.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  w w  w . jav  a 2  s . com
    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));
            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.mongojack.internal.object.BsonObjectGenerator.java

@Override
public void copyCurrentEvent(JsonParser jp) throws IOException {
    JsonToken t = jp.getCurrentToken();/*from ww  w  .j  a va2  s .c  o m*/
    switch (t) {
    case START_OBJECT:
        writeStartObject();
        break;
    case END_OBJECT:
        writeEndObject();
        break;
    case START_ARRAY:
        writeStartArray();
        break;
    case END_ARRAY:
        writeEndArray();
        break;
    case FIELD_NAME:
        writeFieldName(jp.getCurrentName());
        break;
    case VALUE_STRING:
        if (jp.hasTextCharacters()) {
            writeString(jp.getTextCharacters(), jp.getTextOffset(), jp.getTextLength());
        } else {
            writeString(jp.getText());
        }
        break;
    case VALUE_NUMBER_INT:
        switch (jp.getNumberType()) {
        case INT:
            writeNumber(jp.getIntValue());
            break;
        case BIG_INTEGER:
            writeNumber(jp.getBigIntegerValue());
            break;
        default:
            writeNumber(jp.getLongValue());
        }
        break;
    case VALUE_NUMBER_FLOAT:
        switch (jp.getNumberType()) {
        case BIG_DECIMAL:
            writeNumber(jp.getDecimalValue());
            break;
        case FLOAT:
            writeNumber(jp.getFloatValue());
            break;
        default:
            writeNumber(jp.getDoubleValue());
        }
        break;
    case VALUE_TRUE:
        writeBoolean(true);
        break;
    case VALUE_FALSE:
        writeBoolean(false);
        break;
    case VALUE_NULL:
        writeNull();
        break;
    case VALUE_EMBEDDED_OBJECT:
        writeObject(jp.getEmbeddedObject());
        break;
    }
}