Example usage for com.fasterxml.jackson.core JsonToken START_ARRAY

List of usage examples for com.fasterxml.jackson.core JsonToken START_ARRAY

Introduction

In this page you can find the example usage for com.fasterxml.jackson.core JsonToken START_ARRAY.

Prototype

JsonToken START_ARRAY

To view the source code for com.fasterxml.jackson.core JsonToken START_ARRAY.

Click Source Link

Document

START_ARRAY is returned when encountering '[' which signals starting of an Array value

Usage

From source file:cz.cvut.kbss.jsonld.jackson.deserialization.JacksonJsonLdDeserializer.java

private Object parseJsonObject(JsonParser parser) throws IOException {
    Object value = null;/*  w w w .  j a  va  2 s . com*/
    final JsonToken initialToken = parser.getCurrentToken();
    parser.setCodec(mapper);
    if (initialToken == JsonToken.START_ARRAY) {
        value = parser.readValueAs(new TypeReference<List<?>>() {
        });
    } else if (initialToken == JsonToken.START_OBJECT) {
        value = parser.readValueAs(new TypeReference<Map<?, ?>>() {
        });
    } else if (initialToken == JsonToken.VALUE_STRING) {
        value = parser.readValueAs(String.class);
    } else if (initialToken == JsonToken.VALUE_FALSE || initialToken == JsonToken.VALUE_TRUE) {
        value = parser.readValueAs(Boolean.class);
    } else if (initialToken == JsonToken.VALUE_NUMBER_FLOAT || initialToken == JsonToken.VALUE_NUMBER_INT) {
        value = parser.readValueAs(Number.class);
    } else if (initialToken == JsonToken.VALUE_NULL) {
        value = null;
    }
    return value;
}

From source file:ch.rasc.wampspring.message.WampMessage.java

@SuppressWarnings("unchecked")
public static <T extends WampMessage> T fromJson(JsonFactory jsonFactory, String json, WampSession wampSession)
        throws IOException {

    try (JsonParser jp = jsonFactory.createParser(json)) {
        if (jp.nextToken() != JsonToken.START_ARRAY) {
            throw new IOException("Not a JSON array");
        }//from w w w . ja  v a 2s. c om
        if (jp.nextToken() != JsonToken.VALUE_NUMBER_INT) {
            throw new IOException("Wrong message format");
        }

        WampMessageType messageType = WampMessageType.fromTypeId(jp.getValueAsInt());

        switch (messageType) {
        case WELCOME:
            return (T) new WelcomeMessage(jp);
        case PREFIX:
            return (T) new PrefixMessage(jp);
        case CALL:
            return (T) new CallMessage(jp, wampSession);
        case CALLRESULT:
            return (T) new CallResultMessage(jp);
        case CALLERROR:
            return (T) new CallErrorMessage(jp);
        case SUBSCRIBE:
            return (T) new SubscribeMessage(jp, wampSession);
        case UNSUBSCRIBE:
            return (T) new UnsubscribeMessage(jp, wampSession);
        case PUBLISH:
            return (T) new PublishMessage(jp, wampSession);
        case EVENT:
            return (T) new EventMessage(jp, wampSession);
        default:
            return null;
        }

    }
}

From source file:com.addthis.codec.config.ConfigTraversingParser.java

public ConfigTraversingParser(ConfigValue n, ObjectCodec codec) {
    super(0);//from  ww w . ja v a 2  s  .  com
    _objectCodec = codec;
    currentConfig = n;
    if (n.valueType() == LIST) {
        _nextToken = JsonToken.START_ARRAY;
        _nodeCursor = new ConfigNodeCursor.Array((ConfigList) n, null);
    } else if (n.valueType() == OBJECT) {
        _nextToken = JsonToken.START_OBJECT;
        _nodeCursor = new ConfigNodeCursor.Object((ConfigObject) n, null);
    } else { // value node
        _nodeCursor = new ConfigNodeCursor.RootValue(n, null);
    }
}

From source file:io.wcm.caravan.io.jsontransform.source.JacksonStreamSource.java

private JsonElement handleFieldName(String key) throws IOException, JsonParseException {
    JsonToken next = parser.nextToken();
    if (JsonToken.START_OBJECT.equals(next)) {
        return JsonElement.startObject(key);
    } else if (JsonToken.START_ARRAY.equals(next)) {
        return JsonElement.startArray(key);
    } else {//from  w w  w .  ja  va  2s . c  o m
        return JsonElement.value(key, parseValue(next));
    }
}

From source file:org.onosproject.north.aaa.api.parser.impl.ScopeParser.java

public Scope jsonToScope(JsonParser jp) throws IOException, ParseException {
    Scope.Builder builder = Scope.builder();

    while (true) {
        JsonToken token = jp.nextToken();
        if (JsonToken.END_OBJECT.equals(token)) {
            // bail out
            break;
        }// w ww.  j a v  a  2 s . c  o  m

        if (JsonToken.FIELD_NAME.equals(token) && "scopeId".equals(jp.getCurrentName())) {
            jp.nextToken();
            builder.buildScopeId(jp.getText());
        } else if (JsonToken.FIELD_NAME.equals(token) && "scopeDesc".equals(jp.getCurrentName())) {
            jp.nextToken();
            builder.buildScopeDesc(jp.getText());
        } else if (JsonToken.FIELD_NAME.equals(token) && "accesses".equals(jp.getCurrentName())) {
            token = jp.nextToken();
            if (!JsonToken.START_ARRAY.equals(token)) {
                // bail out
                throw new ParseException("expected ARRAY after accesses");
            }
            Set<String> accesses = new HashSet<>();

            while (true) {
                token = jp.nextToken();
                if (JsonToken.END_ARRAY.equals(token)) {
                    // bail out
                    break;
                }
                accesses.add(jp.getText());
            }
            builder.buildRestAccess(accesses);
        }
    }
    return builder.buildAll();
}

From source file:com.ning.metrics.serialization.smile.SmileEnvelopeEventDeserializer.java

/**
 * SmileEnvelopeEventDeserializer should be instantiated (using this constructor) if and only if
 * you plan on using it to incrementally extract events (rather than extracting them all at once)
 *
 * @param in        InputStream containing events
 * @param plainJson whether the stream is in plain json (otherwise smile)
 * @throws IOException generic I/O exception
 *//*from w  w w.  j  a  va2s  .c  o m*/
public SmileEnvelopeEventDeserializer(final InputStream in, final boolean plainJson) throws IOException {
    // TODO bug when using pushbackInputStream like extractEvents does. very strange.

    if (!plainJson) {
        parser = smileFactory.createJsonParser(in);
        mapper = smileObjectMapper;
    } else {
        parser = jsonFactory.createJsonParser(in);
        mapper = jsonObjectMapper;
    }

    /* check that we either point to START_ARRAY or START_OBJECT; in former case
     * it is assumed we have array of event objects; in latter case just a
     * sequence of event objects.
     */
    nextToken = parser.nextToken();
    boolean inArray = (nextToken == JsonToken.START_ARRAY);
    if (inArray) {
        nextToken = parser.nextToken();
    }
    // either way, first 'real' event must be a JSON Object
    if (nextToken != JsonToken.START_OBJECT) {
        throw new IOException("Invalid stream: expected JsonToken.START_OBJECT (in array context? " + inArray
                + "): instead encountered: " + nextToken);
    }
}

From source file:org.onosproject.north.aaa.api.parser.impl.ClientParser.java

public ClientCredential jsonToClientCredential(JsonParser jp) throws ParseException, IOException {
    ClientCredential.Builder builder = ClientCredential.builder();

    while (true) {
        JsonToken token = jp.nextToken();
        if (JsonToken.END_OBJECT.equals(token)) {
            // bail out
            break;
        }//from w  ww  .jav a2s .  c o  m

        if (JsonToken.FIELD_NAME.equals(token) && "appId".equals(jp.getCurrentName())) {
            jp.nextToken();
            builder.buildAppId(jp.getText());
        } else if (JsonToken.FIELD_NAME.equals(token) && "grants".equals(jp.getCurrentName())) {
            token = jp.nextToken();
            if (!JsonToken.START_ARRAY.equals(token)) {
                // bail out
                throw new ParseException("expected ARRAY after grants");
            }
            Set<String> grants = new HashSet<>();

            while (true) {
                token = jp.nextToken();
                if (JsonToken.END_ARRAY.equals(token)) {
                    // bail out
                    break;
                }
                grants.add(jp.getText());
            }
            builder.buildGrants(grants);

        } else if (JsonToken.FIELD_NAME.equals(token) && "scopes".equals(jp.getCurrentName())) {
            token = jp.nextToken();
            if (!JsonToken.START_ARRAY.equals(token)) {
                // bail out
                throw new ParseException("expected ARRAY after scopes");
            }
            Set<String> scopes = new HashSet<>();

            while (true) {
                token = jp.nextToken();
                if (JsonToken.END_ARRAY.equals(token)) {
                    // bail out
                    break;
                }
                scopes.add(jp.getText());
            }
            builder.buildScopes(scopes);

        } else if (JsonToken.FIELD_NAME.equals(token) && "redirectUri".equals(jp.getCurrentName())) {
            jp.nextToken();
            String uri = jp.getText();

            // verify uri by uri regex
            Pattern emailPattern = Pattern.compile(URI_PATTERN);
            if (!emailPattern.matcher(uri).matches()) {
                // bail out
                throw new ParseException("uri is not valid");
            }
            builder.buildRedirectUri(uri);
        } else if (JsonToken.FIELD_NAME.equals(token) && "clientId".equals(jp.getCurrentName())) {
            jp.nextToken();
            builder.buildClientId(jp.getText());
        } else if (JsonToken.FIELD_NAME.equals(token) && "clientSecret".equals(jp.getCurrentName())) {
            jp.nextToken();
            builder.buildClientSecret(jp.getText());
        }
    }
    return builder.buildAll();
}

From source file:ch.rasc.wampspring.message.PublishMessage.java

public PublishMessage(JsonParser jp, WampSession wampSession) throws IOException {
    super(WampMessageType.PUBLISH);

    if (jp.nextToken() != JsonToken.VALUE_STRING) {
        throw new IOException();
    }//from   w  w w  . j a  v  a2s .  c  o  m
    setTopicURI(replacePrefix(jp.getValueAsString(), wampSession));

    jp.nextToken();
    this.event = jp.readValueAs(Object.class);

    if (jp.nextToken() != JsonToken.END_ARRAY) {
        if (jp.getCurrentToken() == JsonToken.VALUE_TRUE || jp.getCurrentToken() == JsonToken.VALUE_FALSE) {
            this.excludeMe = jp.getValueAsBoolean();

            this.exclude = null;

            this.eligible = null;

            if (jp.nextToken() != JsonToken.END_ARRAY) {
                // Wrong message format, excludeMe should not be followed by
                // any value
                throw new IOException();
            }
        } else {
            this.excludeMe = null;

            TypeReference<Set<String>> typRef = new TypeReference<Set<String>>() {
                // nothing here
            };

            if (jp.getCurrentToken() != JsonToken.START_ARRAY) {
                throw new IOException();
            }
            this.exclude = jp.readValueAs(typRef);

            if (jp.nextToken() == JsonToken.START_ARRAY) {
                this.eligible = jp.readValueAs(typRef);
            } else {
                this.eligible = null;
            }
        }
    } else {
        this.excludeMe = null;
        this.exclude = null;
        this.eligible = null;
    }

}

From source file:com.codeasylum.bank.core.store.indigenous.JsonDisassembler.java

private Record<?> findNext() throws IOException, ProcessException {

    JsonToken token;/*w w  w .  ja  v a  2  s. c  om*/

    while ((token = parser.nextToken()) != null) {
        try {
            switch (token) {
            case NOT_AVAILABLE:
                throw new ProcessException("Encountered illegal token(%s)", token.name());
            case VALUE_EMBEDDED_OBJECT:
                throw new ProcessException("Encountered illegal token(%s)", token.name());
            case FIELD_NAME:

                String name = parser.getCurrentName();

                if (name.indexOf('.') >= 0) {
                    throw new ProcessException("Use of reserved character '.' within field name(%s)", name);
                }

                nest.push(schema.addChildField(getField(name)));
                break;
            case START_OBJECT:
                schema.setCurrentFieldAsGroup();
                break;
            case START_ARRAY:
                if (schema.isCurrentlyRoot() || (lastToken.equals(JsonToken.START_ARRAY))) {
                    nest.push(schema.addChildField(getField("array").setRepeated(true)));
                } else {
                    schema.setCurrentFieldAsRepeated();
                }
                break;
            case END_OBJECT:
                closeField();
                break;
            case END_ARRAY:
                schema.close();
                nest.pop();
                break;
            case VALUE_STRING:
                return new Record<String>(schema, nest, parser.getValueAsString());
            case VALUE_NUMBER_INT:
                return new Record<Long>(schema, nest, parser.getValueAsLong());
            case VALUE_NUMBER_FLOAT:
                return new Record<Double>(schema, nest, parser.getValueAsDouble());
            case VALUE_TRUE:
                return new Record<Boolean>(schema, nest, true);
            case VALUE_FALSE:
                return new Record<Boolean>(schema, nest, false);
            case VALUE_NULL:
                return new Record<Void>(schema, nest, null);
            default:
                throw new UnknownSwitchCaseException(token.name());
            }
        } finally {
            lastToken = token;
            if (token.isScalarValue()) {
                closeField();
            }
        }
    }

    return null;
}

From source file:com.pursuer.reader.easyrss.data.parser.ItemJSONParser.java

public void parse() throws JsonParseException, IOException {
    Item item = new Item();
    int level = 0;
    boolean found = false;
    while (parser.nextToken() != null) {
        final String name = parser.getCurrentName();
        switch (parser.getCurrentToken()) {
        case START_OBJECT:
        case START_ARRAY:
            level++;//from  w w w . j a  v a2 s.c o m
            break;
        case END_OBJECT:
        case END_ARRAY:
            level--;
            break;
        case VALUE_STRING:
            if (level == 1 && "continuation".equals(name)) {
                if (listener != null) {
                    listener.onListContinuationRetrieved(parser.getText());
                }
            } else if (level == 3) {
                if ("id".equals(name)) {
                    final String text = parser.getText();
                    item.setUid(text.substring(text.lastIndexOf('/') + 1));
                } else if ("title".equals(name)) {
                    item.setTitle(Html.fromHtml(parser.getText()).toString());
                } else if ("timestampUsec".equals(name)) {
                    item.setTimestamp(Long.valueOf(parser.getText()));
                } else if ("author".equals(name)) {
                    item.setAuthor(Html.fromHtml(parser.getText()).toString());
                }
            } else if (level == 4) {
                if ("content".equals(name)) {
                    item.setContent(parser.getText());
                } else if ("streamId".equals(name)) {
                    item.setSourceUri(parser.getText());
                } else if ("title".equals(name)) {
                    item.setSourceTitle(Html.fromHtml(parser.getText()).toString());
                }
            } else if (level == 5 && "href".equals(name)) {
                item.setHref(parser.getText());
            }
            break;
        case FIELD_NAME:
            if (level == 1 && "items".equals(name)) {
                found = true;
            } else if (level == 3 && "categories".equals(name)) {
                parser.nextToken();
                if (parser.getCurrentToken() == JsonToken.START_ARRAY) {
                    while (parser.nextToken() != JsonToken.END_ARRAY) {
                        if (parser.getCurrentToken() == JsonToken.VALUE_STRING) {
                            final String category = parser.getText();
                            if (DataUtils.isReadUid(category)) {
                                item.getState().setRead(true);
                            } else if (DataUtils.isStarredUid(category)) {
                                item.getState().setStarred(true);
                            } else if (DataUtils.isTagUid(category)) {
                                item.addTag(category);
                            }
                        }
                    }
                }
            } else if (level == 3 && "enclosure".equals(name)) {
                parser.nextToken();
                if (parser.getCurrentToken() == JsonToken.START_ARRAY) {
                    while (parser.nextToken() != JsonToken.END_ARRAY) {
                    }
                }
            }
        default:
            break;
        }
        if (level == 2) {
            if (item.getUid() != null && listener != null) {
                listener.onItemRetrieved(item);
            }
            item = new Item();
        }
    }
    parser.close();
    if (!found) {
        throw new IllegalStateException("Invalid JSON input");
    }
}