List of usage examples for com.fasterxml.jackson.core JsonToken isScalarValue
public boolean isScalarValue()
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; }