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:net.nullschool.grains.jackson.datatype.GrainDeserializer.java

@Override
public Grain deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException {
    JsonToken token = jp.getCurrentToken();
    if (token == JsonToken.START_OBJECT) {
        token = jp.nextToken();
    } else if (token != JsonToken.FIELD_NAME) {
        throw ctxt.mappingException(getValueClass());
    }//from   w  ww  .jav  a  2  s.  c  om

    if (token == JsonToken.END_OBJECT) {
        return factory.getDefaultValue();
    }

    GrainBuilder builder = factory.getNewBuilder();

    do {
        String key = jp.getCurrentName();
        PropertyReader reader = readers.get(key);
        token = jp.nextToken();
        Object value;
        if (token == JsonToken.VALUE_NULL) {
            value = null;
        } else if (reader != null) {
            value = reader.deserializer.deserialize(jp, ctxt);
        } else {
            switch (token) {
            case START_ARRAY:
                value = extArrayDeserializer.deserialize(jp, ctxt);
                break;
            case START_OBJECT:
                value = extObjectDeserializer.deserialize(jp, ctxt);
                break;
            default:
                value = extValueDeserializer.deserialize(jp, ctxt);
            }
        }

        builder.put(key, value);
    } while (jp.nextToken() == JsonToken.FIELD_NAME);

    return builder.build();
}

From source file:org.springframework.data.couchbase.core.convert.translation.JacksonTranslationService.java

/**
 * Decode a JSON string into the {@link CouchbaseStorable} structure.
 *
 * @param source the source formatted document.
 * @param target the target of the populated data.
 *
 * @return the decoded structure./*from   w ww. j  a va 2s.com*/
 */
@Override
public final CouchbaseStorable decode(final Object source, final CouchbaseStorable target) {
    try {
        JsonParser parser = factory.createParser((String) source);
        while (parser.nextToken() != null) {
            JsonToken currentToken = parser.getCurrentToken();

            if (currentToken == JsonToken.START_OBJECT) {
                return decodeObject(parser, (CouchbaseDocument) target);
            } else if (currentToken == JsonToken.START_ARRAY) {
                return decodeArray(parser, new CouchbaseList());
            } else {
                throw new MappingException("JSON to decode needs to start as array or object!");
            }
        }
        parser.close();
    } catch (IOException ex) {
        throw new RuntimeException("Could not decode JSON", ex);
    }
    return target;
}

From source file:com.cinnober.msgcodec.json.JsonValueHandlerTest.java

@Test
public void testSafeUInt64DecodeMaxUInt64() throws IOException {
    JsonParser p = f.createParser("\"18446744073709551615\"");
    p.nextToken();
    assertEquals(-1L, JsonValueHandler.UINT64_SAFE.readValue(p).longValue());
}

From source file:com.cinnober.msgcodec.json.TypeScannerJsonParserTest.java

@Test
public void testNested1() throws IOException {
    JsonParser p = new JsonFactory()
            .createParser("{\"a\":{\"c\":2, \"$type\":\"y\", \"d\":2.1}, \"$type\":\"x\", \"b\":1.1}");
    p.nextToken(); // START_OBJECT
    p.nextToken(); // FIELD_NAME
    TypeScannerJsonParser p2 = new TypeScannerJsonParser(p);
    assertEquals("x", p2.findType());

    assertNextField("a", p2);
    assertEquals(JsonToken.START_OBJECT, p2.nextToken());
    // start nested object
    p2.nextToken(); // FIELD_NAME
    assertEquals("y", p2.findType());
    assertNextField("c", p2);
    assertNextIntValue(2, p2);//ww w  .  j a  v a2s.com
    assertNextField("d", p2);
    assertNextFloatValue(2.1, p2);
    assertEquals(JsonToken.END_OBJECT, p2.nextToken());
    // end nested object

    assertNextField("b", p2);
    assertNextFloatValue(1.1, p2);

    assertEquals(JsonToken.END_OBJECT, p2.nextToken());
    assertNull(p2.nextToken());
}

From source file:com.cinnober.msgcodec.json.TypeScannerJsonParserTest.java

@Test
public void testNested2() throws IOException {
    JsonParser p = new JsonFactory()
            .createParser("{\"a\":{\"c\":2, \"d\":2.1, \"$type\":\"y\"}, \"$type\":\"x\", \"b\":1.1}");
    p.nextToken(); // START_OBJECT
    p.nextToken(); // FIELD_NAME
    TypeScannerJsonParser p2 = new TypeScannerJsonParser(p);
    assertEquals("x", p2.findType());

    assertNextField("a", p2);
    assertEquals(JsonToken.START_OBJECT, p2.nextToken());
    // start nested object
    p2.nextToken(); // FIELD_NAME
    assertEquals("y", p2.findType());
    assertNextField("c", p2);
    assertNextIntValue(2, p2);//  ww w.  j  a v a  2  s  .  com
    assertNextField("d", p2);
    assertNextFloatValue(2.1, p2);
    assertEquals(JsonToken.END_OBJECT, p2.nextToken());
    // end nested object

    assertNextField("b", p2);
    assertNextFloatValue(1.1, p2);

    assertEquals(JsonToken.END_OBJECT, p2.nextToken());
    assertNull(p2.nextToken());
}

From source file:com.cinnober.msgcodec.json.TypeScannerJsonParserTest.java

@Test
public void testNested3() throws IOException {
    JsonParser p = new JsonFactory()
            .createParser("{\"a\":{\"$type\":\"y\", \"c\":2, \"d\":2.1}, \"$type\":\"x\", \"b\":1.1}");
    p.nextToken(); // START_OBJECT
    p.nextToken(); // FIELD_NAME
    TypeScannerJsonParser p2 = new TypeScannerJsonParser(p);
    assertEquals("x", p2.findType());

    assertNextField("a", p2);
    assertEquals(JsonToken.START_OBJECT, p2.nextToken());
    // start nested object
    p2.nextToken(); // FIELD_NAME
    assertEquals("y", p2.findType());
    assertNextField("c", p2);
    assertNextIntValue(2, p2);/*from w  ww .  ja  v  a  2  s.  com*/
    assertNextField("d", p2);
    assertNextFloatValue(2.1, p2);
    assertEquals(JsonToken.END_OBJECT, p2.nextToken());
    // end nested object

    assertNextField("b", p2);
    assertNextFloatValue(1.1, p2);

    assertEquals(JsonToken.END_OBJECT, p2.nextToken());
    assertNull(p2.nextToken());
}

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

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

    final NavigationProperty property = new NavigationProperty();

    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
        final JsonToken token = jp.getCurrentToken();
        if (token == JsonToken.FIELD_NAME) {
            if ("Name".equals(jp.getCurrentName())) {
                property.setName(jp.nextTextValue());
            } else if ("Type".equals(jp.getCurrentName())) {
                property.setType(jp.nextTextValue());
            } else if ("Nullable".equals(jp.getCurrentName())) {
                property.setNullable(BooleanUtils.toBoolean(jp.nextTextValue()));
            } else if ("Partner".equals(jp.getCurrentName())) {
                property.setPartner(jp.nextTextValue());
            } else if ("ContainsTarget".equals(jp.getCurrentName())) {
                property.setContainsTarget(BooleanUtils.toBoolean(jp.nextTextValue()));
            } else if ("ReferentialConstraint".equals(jp.getCurrentName())) {
                jp.nextToken();//ww  w. j a v  a2s  . c  o m
                property.getReferentialConstraints()
                        .add(jp.getCodec().readValue(jp, ReferentialConstraint.class));
            } else if ("OnDelete".equals(jp.getCurrentName())) {
                jp.nextToken();
                property.setOnDelete(jp.getCodec().readValue(jp, OnDelete.class));
            } else if ("Annotation".equals(jp.getCurrentName())) {
                jp.nextToken();
                property.setAnnotation(jp.getCodec().readValue(jp, Annotation.class));
            }
        }
    }

    return property;
}

From source file:com.redhat.red.build.koji.model.json.util.MavenGAVDeserializer.java

@Override
public SimpleProjectVersionRef deserialize(JsonParser jp, DeserializationContext ctxt)
        throws IOException, JsonProcessingException {
    String g = null;//from  ww w.j a va2s. c  o m
    String a = null;
    String v = null;

    JsonToken token = null;
    while ((token = jp.nextToken()) != JsonToken.END_OBJECT) {
        if (token == JsonToken.VALUE_STRING) {
            String field = jp.getCurrentName();
            switch (field) {
            case ("group_id"): {
                g = jp.getText();
                break;
            }
            case ("artifact_id"): {
                a = jp.getText();
                break;
            }
            case ("version"): {
                v = jp.getText();
                break;
            }
            default: {
                Logger logger = LoggerFactory.getLogger(getClass());
                logger.debug("Ignoring unknown field: {}", field);
            }
            }
        }
    }

    if (isEmpty(g) || isEmpty(a) || isEmpty(v)) {
        throw new KojiJsonException("Invalid GAV: " + g + ":" + a + ":" + v);
    }

    return new SimpleProjectVersionRef(g, a, v);
}

From source file:javaslang.jackson.datatype.deserialize.TupleDeserializer.java

@Override
public Tuple deserialize(JsonParser p, DeserializationContext ctxt)
        throws IOException, JsonProcessingException {
    List<Object> list = new ArrayList<>();
    int ptr = 0;/*from   w  ww  .  ja  va  2 s  .  com*/

    for (JsonToken jsonToken = p.nextToken(); jsonToken != END_ARRAY; jsonToken = p.nextToken()) {
        if (ptr >= deserializersCount()) {
            throw ctxt.mappingException(javaType.getRawClass());
        }
        JsonDeserializer<?> deserializer = deserializer(ptr++);
        Object value = (jsonToken != VALUE_NULL) ? deserializer.deserialize(p, ctxt)
                : deserializer.getNullValue(ctxt);
        list.add(value);
    }
    return create(list, ctxt);
}

From source file:nl.talsmasoftware.enumerables.support.json.jackson2.EnumerableDeserializer.java

private Enumerable parseObject(JsonParser jp, Class<? extends Enumerable> type) throws IOException {
    Enumerable value = null;//  ww  w  .j  a v  a2 s .  c  om
    while (true) {
        final JsonToken nextToken = jp.nextToken();
        if (nextToken == null)
            throw new IllegalStateException("JSON stream ended while parsing an Enumerable object.");

        switch (nextToken) {
        case VALUE_NULL:
        case VALUE_STRING:
            if (value == null && "value".equals(jp.getCurrentName())) {
                value = Enumerable.parse(type, jp.getText());
            }
            break;
        case END_OBJECT:
            jp.clearCurrentToken();
            if (value == null)
                throw new IllegalStateException(
                        "Attribute \"value\" is required to parse an Enumerable JSON object.");
            return value;
        case START_ARRAY:
        case START_OBJECT:
            jp.skipChildren();
            jp.clearCurrentToken();
            break;
        }
    }
}