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

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

Introduction

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

Prototype

public boolean isScalarValue() 

Source Link

Document

Method that can be used to check whether this token represents a valid non-structured value.

Usage

From source file:com.adobe.communities.ugc.migration.importer.UGCImportHelper.java

public static Map<String, Object> extractSubmap(final JsonParser jsonParser) throws IOException {
    jsonParser.nextToken(); // skip the START_OBJECT token
    final Map<String, Object> subMap = new HashMap<String, Object>();
    while (!jsonParser.getCurrentToken().equals(JsonToken.END_OBJECT)) {
        final String label = jsonParser.getCurrentName(); // get the current label
        final JsonToken token = jsonParser.nextToken(); // get the current value
        if (!token.isScalarValue()) {
            if (token.equals(JsonToken.START_OBJECT)) {
                // if the next token starts a new object, recurse into it
                subMap.put(label, extractSubmap(jsonParser));
            } else if (token.equals(JsonToken.START_ARRAY)) {
                final List<String> subArray = new ArrayList<String>();
                jsonParser.nextToken(); // skip the START_ARRAY token
                while (!jsonParser.getCurrentToken().equals(JsonToken.END_ARRAY)) {
                    subArray.add(jsonParser.getValueAsString());
                    jsonParser.nextToken();
                }// w w  w .j av  a 2s .  c om
                subMap.put(label, subArray);
                jsonParser.nextToken(); // skip the END_ARRAY token
            }
        } else {
            // either a string, boolean, or long value
            if (token.isNumeric()) {
                subMap.put(label, jsonParser.getValueAsLong());
            } else {
                final String value = jsonParser.getValueAsString();
                if (value.equals("true") || value.equals("false")) {
                    subMap.put(label, jsonParser.getValueAsBoolean());
                } else {
                    subMap.put(label, value);
                }
            }
        }
        jsonParser.nextToken(); // next token will either be an "END_OBJECT" or a new label
    }
    jsonParser.nextToken(); // skip the END_OBJECT token
    return subMap;
}

From source file:com.amazonaws.hal.client.HalJsonListUnmarshaller.java

@Override
public List<Object> unmarshall(JsonUnmarshallerContext context) throws Exception {
    List<Object> list = new ArrayList<>();
    JsonToken token = context.getCurrentToken();

    while (token != null && token != JsonToken.END_ARRAY) {
        if (token.isScalarValue()) {
            list.add(JsonUnmarshallerUtil.getObjectForToken(token, context));
        } else if (token == JsonToken.START_OBJECT) {
            context.nextToken();/*from w w  w .  ja  va2  s.  c  om*/
            list.add(HalJsonMapUnmarshaller.getInstance().unmarshall(context));
        } else if (token == JsonToken.START_ARRAY) {
            context.nextToken();
            list.add(HalJsonListUnmarshaller.getInstance().unmarshall(context));
        }

        token = context.nextToken();
    }

    return list;
}

From source file:io.syndesis.jsondb.impl.JsonRecordSupport.java

public static void jsonStreamToRecords(JsonParser jp, String path, Consumer<JsonRecord> consumer)
        throws IOException {
    boolean inArray = false;
    int arrayIndex = 0;
    while (true) {
        JsonToken nextToken = jp.nextToken();

        String currentPath = path;

        if (nextToken == FIELD_NAME) {
            if (inArray) {
                currentPath = path + toArrayIndexPath(arrayIndex) + "/";
            }//from  ww  w .  j a v  a2s  .  co  m
            jsonStreamToRecords(jp, currentPath + validateKey(jp.getCurrentName()) + "/", consumer);
        } else if (nextToken == VALUE_NULL) {
            if (inArray) {
                currentPath = path + toArrayIndexPath(arrayIndex) + "/";
            }
            consumer.accept(JsonRecord.of(currentPath, "", nextToken.id()));
            if (inArray) {
                arrayIndex++;
            } else {
                return;
            }
        } else if (nextToken.isScalarValue()) {
            if (inArray) {
                currentPath = path + toArrayIndexPath(arrayIndex) + "/";
            }
            consumer.accept(JsonRecord.of(currentPath, jp.getValueAsString(), nextToken.id()));
            if (inArray) {
                arrayIndex++;
            } else {
                return;
            }
        } else if (nextToken == END_OBJECT) {
            if (inArray) {
                arrayIndex++;
            } else {
                return;
            }
        } else if (nextToken == START_ARRAY) {
            inArray = true;
        } else if (nextToken == END_ARRAY) {
            return;
        }
    }
}

From source file:net.javacrumbs.json2xml.JsonSaxAdapter.java

/**
 * Pares JSON element.//w w  w. jav  a2  s  . c om
 * @param elementName
 * @param inArray if the element is in an array
 * @throws Exception
 */
private void parseElement(final String elementName, final boolean inArray) throws Exception {
    JsonToken currentToken = jsonParser.getCurrentToken();
    if (inArray) {
        startElement(elementName);
    }
    if (START_OBJECT.equals(currentToken)) {
        parseObject();
    } else if (START_ARRAY.equals(currentToken)) {
        parseArray(elementName);
    } else if (currentToken.isScalarValue()) {
        parseValue();
    }
    if (inArray) {
        endElement(elementName);
    }
}

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

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

    JsonToken token;

    while ((token = parser.nextToken()) != null) {
        try {// w  w  w  .ja  v  a 2  s  .c  om
            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;
}