List of usage examples for com.fasterxml.jackson.core JsonToken END_ARRAY
JsonToken END_ARRAY
To view the source code for com.fasterxml.jackson.core JsonToken END_ARRAY.
Click Source Link
From source file:org.mstc.zmq.json.Decoder.java
@SuppressWarnings("unchecked") public static void decode(String input, Field[] fields, Object b) throws IOException { ObjectMapper mapper = new ObjectMapper(); mapper.enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS); if (logger.isDebugEnabled()) logger.debug(input);//from w ww. j av a 2 s . co m JsonFactory factory = mapper.getFactory(); try (JsonParser jp = factory.createParser(input)) { /* Sanity check: verify that we got "Json Object" */ if (jp.nextToken() != JsonToken.START_OBJECT) { throw new IOException("Expected data to start with an Object"); } /* Iterate over object fields */ while (jp.nextToken() != JsonToken.END_OBJECT) { String fieldName = jp.getCurrentName(); jp.nextToken(); Field field = getField(fieldName, fields); if (field == null) { throw new IOException( "Could not find field [" + fieldName + "] on class " + b.getClass().getName()); } try { if (field.getType().isAssignableFrom(List.class)) { String adder = getAdder(fieldName); TypeFactory t = TypeFactory.defaultInstance(); ParameterizedType listType = (ParameterizedType) field.getGenericType(); Class<?> listClass = (Class<?>) listType.getActualTypeArguments()[0]; List list = mapper.readValue(jp.getValueAsString(), t.constructCollectionType(List.class, listClass)); Method m = b.getClass().getDeclaredMethod(adder, Collection.class); m.invoke(b, list); } else if (field.getType().isArray()) { Class<?> type = field.getType(); String setter = getSetter(fieldName); Method m = b.getClass().getDeclaredMethod(setter, field.getType()); logger.info("Field {} is array of {}[], {}, using method {}", field.getName(), field.getType().getComponentType(), jp.getCurrentToken().name(), m); if (jp.getCurrentToken().id() == JsonToken.START_ARRAY.id()) { List list = new ArrayList(); while (jp.nextToken() != JsonToken.END_ARRAY) { String value = jp.getText(); switch (jp.getCurrentToken()) { case VALUE_STRING: list.add(value); break; case VALUE_NUMBER_INT: if (type.getComponentType().isAssignableFrom(double.class)) { list.add(Double.parseDouble(value)); } else if (type.getComponentType().isAssignableFrom(float.class)) { list.add(Float.parseFloat(value)); } else { list.add(Integer.parseInt(value)); } break; case VALUE_NUMBER_FLOAT: logger.info("Add float"); list.add(jp.getFloatValue()); break; case VALUE_NULL: break; default: logger.warn("[3] Not sure how to handle {} yet", jp.getCurrentToken().name()); } } Object array = Array.newInstance(field.getType().getComponentType(), list.size()); for (int i = 0; i < list.size(); i++) { Object val = list.get(i); Array.set(array, i, val); } m.invoke(b, array); } else { if (type.getComponentType().isAssignableFrom(byte.class)) { m.invoke(b, jp.getBinaryValue()); } } } else { String setter = getSetter(fieldName); logger.debug("{}: {}", setter, field.getType().getName()); Method m = b.getClass().getDeclaredMethod(setter, field.getType()); switch (jp.getCurrentToken()) { case VALUE_STRING: m.invoke(b, jp.getText()); break; case VALUE_NUMBER_INT: m.invoke(b, jp.getIntValue()); break; case VALUE_NUMBER_FLOAT: m.invoke(b, jp.getFloatValue()); break; case VALUE_NULL: logger.debug("Skip invoking {}.{}, property is null", b.getClass().getName(), m.getName()); break; case START_OBJECT: StringBuilder sb = new StringBuilder(); while (jp.nextToken() != JsonToken.END_OBJECT) { switch (jp.getCurrentToken()) { case VALUE_STRING: sb.append("\"").append(jp.getText()).append("\""); break; case FIELD_NAME: if (sb.length() > 0) sb.append(","); sb.append("\"").append(jp.getText()).append("\"").append(":"); break; case VALUE_NUMBER_INT: sb.append(jp.getIntValue()); break; case VALUE_NUMBER_FLOAT: sb.append(jp.getFloatValue()); break; case VALUE_NULL: sb.append("null"); break; default: logger.warn("[2] Not sure how to handle {} yet", jp.getCurrentToken().name()); } } String s = String.format("%s%s%s", JsonToken.START_OBJECT.asString(), sb.toString(), JsonToken.END_OBJECT.asString()); Object parsed = getNested(field.getType(), s.getBytes()); m.invoke(b, parsed); break; default: logger.warn("[1] Not sure how to handle {} yet", jp.getCurrentToken().name()); } } } catch (InvocationTargetException | NoSuchMethodException | IllegalAccessException | IllegalArgumentException e) { logger.error("Failed setting field [{}], builder: {}", fieldName, b.getClass().getName(), e); } } } }
From source file:org.tanrabad.survey.service.json.MultiPolygonTypeConverter.java
private Location getLocation(JsonParser jsonParser) throws IOException { Location value3;/*from w w w. j a va2s. com*/ if (jsonParser.getCurrentToken() == JsonToken.START_ARRAY) { ArrayList<Double> point = new ArrayList<>(); while (jsonParser.nextToken() != JsonToken.END_ARRAY) { Double coordinate; coordinate = jsonParser.getCurrentToken() == JsonToken.VALUE_NULL ? null : jsonParser.getValueAsDouble(); point.add(coordinate); } value3 = new Location(point.get(1), point.get(0)); } else { value3 = null; } return value3; }
From source file:com.github.heuermh.ensemblrestclient.JacksonArchivedSequenceConverter.java
static ArchivedSequence parseArchivedSequence(final JsonFactory jsonFactory, final InputStream inputStream) throws IOException { JsonParser parser = null;/* ww w .j a va 2 s . c om*/ try { parser = jsonFactory.createParser(inputStream); parser.nextToken(); String id = null; String type = null; String assembly = null; String release = null; String version = null; String latest = null; String peptide = null; boolean current = false; List<String> possibleReplacement = new ArrayList<String>(); while (parser.nextToken() != JsonToken.END_OBJECT) { String field = parser.getCurrentName(); parser.nextToken(); if ("id".equals(field)) { id = parser.getText(); } else if ("type".equals(field)) { type = parser.getText(); } else if ("assembly".equals(field)) { assembly = parser.getText(); } else if ("release".equals(field)) { release = parser.getText(); } else if ("version".equals(field)) { version = parser.getText(); } else if ("latest".equals(field)) { latest = parser.getText(); } else if ("peptide".equals(field)) { peptide = parser.getText(); } else if ("is_current".equals(field)) { current = (Integer.parseInt(parser.getText()) > 0); } else if ("possible_replacement".equals(field)) { while (parser.nextToken() != JsonToken.END_ARRAY) { possibleReplacement.add(parser.getText()); } } } return new ArchivedSequence(id, type, assembly, release, version, latest, peptide, current, possibleReplacement.toArray(new String[possibleReplacement.size()])); } finally { try { inputStream.close(); } catch (Exception e) { // ignored } try { parser.close(); } catch (Exception e) { // ignored } } }
From source file:net.nullschool.grains.jackson.datatype.AbstractBasicConstCollectionDeserializer.java
@Override public T deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException { JsonToken token = jp.getCurrentToken(); if (token != JsonToken.START_ARRAY) { throw ctxt.mappingException(collectionType.getRawClass()); }//w w w .j a v a2 s .c om if ((token = jp.nextToken()) == JsonToken.END_ARRAY) { return emptyResult(); } JsonDeserializer<?> ed = elementDeserializer; TypeDeserializer etd = elementTypeDeserializer; List<Object> elements = null; Object element; do { element = token != JsonToken.VALUE_NULL ? etd == null ? ed.deserialize(jp, ctxt) : ed.deserializeWithType(jp, ctxt, etd) : null; token = jp.nextToken(); if (elements == null) { if (token == JsonToken.END_ARRAY) { return resultOf(element); } elements = new ArrayList<>(); } elements.add(element); } while (token != JsonToken.END_ARRAY); return asResult(elements); }
From source file:name.gumartinm.weather.information.parser.JPOSCurrentParser.java
private void getCurrentWeatherData(final Current currentWeatherData, final JsonParser jParser) throws JsonParseException, IOException { if (jParser.nextToken() == JsonToken.START_OBJECT) { while (jParser.nextToken() != JsonToken.END_OBJECT) { final String fieldname = jParser.getCurrentName(); final JsonToken nextToken = jParser.nextToken(); if (nextToken == JsonToken.START_OBJECT) { this.getCurrentWeatherDataObjects(currentWeatherData, jParser, fieldname); }/*from ww w. j a v a 2 s. co m*/ if (nextToken == JsonToken.START_ARRAY) { JsonToken tokenNext = jParser.nextToken(); while (tokenNext != JsonToken.END_ARRAY) { if (tokenNext == JsonToken.START_OBJECT) { this.getCurrentWeatherDataObjects(currentWeatherData, jParser, fieldname); } tokenNext = jParser.nextToken(); } } if ((nextToken == JsonToken.VALUE_NUMBER_INT) || (nextToken == JsonToken.VALUE_STRING)) { this.getCurrentWeatherDataObjects(currentWeatherData, jParser, fieldname); } } } }
From source file:ai.susi.geo.GeoJsonReader.java
@Override public void run() { // using a streamparser to be able to handle very large input files try {// w w w. ja v a2 s.co m JsonToken token; while (!parser.isClosed() && (token = parser.nextToken()) != null && token != JsonToken.END_OBJECT) { String name = parser.getCurrentName(); if (JsonToken.FIELD_NAME.equals(token) && "type".equals(name)) { parser.nextToken(); //System.out.println(parser.getText()); continue; } if (JsonToken.FIELD_NAME.equals(token) && "features".equals(name)) { token = parser.nextToken(); if (!JsonToken.START_ARRAY.equals(token)) break; while (!parser.isClosed() && (token = parser.nextToken()) != null && token != JsonToken.END_ARRAY) { Feature feature = new Feature(parser); //System.out.println(feature.toString()); try { this.featureQueue.put(feature); } catch (InterruptedException e) { Log.getLog().warn(e); } } } } } catch (IOException e) { Log.getLog().warn(e); } finally { for (int i = 0; i < this.concurrency; i++) { try { this.featureQueue.put(POISON_FEATURE); } catch (InterruptedException e) { } } } }
From source file:com.microsoft.azure.storage.core.JsonUtilities.java
/*** * Reserved for internal use. Asserts that the token type of the parser is the end of an array. * //from www . ja v a2 s . c o m * @param parser * The {@link JsonParser} whose current token to check. */ public static void assertIsEndArrayJsonToken(final JsonParser parser) throws JsonParseException { if (!(parser.getCurrentToken() == JsonToken.END_ARRAY)) { throw new JsonParseException(SR.EXPECTED_END_ARRAY, parser.getCurrentLocation()); } }
From source file:com.microsoft.azure.storage.table.ODataUtilities.java
/*** * Reserved for internal use. Asserts that the token type of the parser is the end of an array. * // w w w .ja va 2 s .c o m * @param parser * The {@link JsonParser} whose current token to check. */ protected static void assertIsEndArrayJsonToken(final JsonParser parser) throws JsonParseException { if (!(parser.getCurrentToken() == JsonToken.END_ARRAY)) { throw new JsonParseException(SR.EXPECTED_END_ARRAY, parser.getCurrentLocation()); } }
From source file:com.reprezen.swagedit.model.NodeDeserializer.java
protected ArrayNode deserializeArrayNode(JsonParser p, DeserializationContext context, JsonLocation startLocation) throws IOException { final Model model = (Model) context.getAttribute(ATTRIBUTE_MODEL); final AbstractNode parent = (AbstractNode) context.getAttribute(ATTRIBUTE_PARENT); final JsonPointer ptr = (JsonPointer) context.getAttribute(ATTRIBUTE_POINTER); ArrayNode node = model.arrayNode(parent, ptr); int i = 0;// ww w.j ava 2s . co m while (p.nextToken() != JsonToken.END_ARRAY) { JsonPointer pp = JsonPointer.compile(ptr.toString() + "/" + i); context.setAttribute(ATTRIBUTE_PARENT, node); context.setAttribute(ATTRIBUTE_POINTER, pp); AbstractNode v = deserialize(p, context); node.add(v); i++; } node.setStartLocation(createLocation(startLocation)); node.setEndLocation(createLocation(p.getCurrentLocation())); return node; }
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; }/* ww w . jav a 2s . 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(); }