List of usage examples for com.fasterxml.jackson.core JsonParser getCurrentName
public abstract String getCurrentName() throws IOException, JsonParseException;
From source file:com.entertailion.android.shapeways.MainActivity.java
private void getMaterials() { Log.d(LOG_TAG, "getMaterials"); try {//from w w w .j av a 2 s . c o m HttpResponse httpResponse = ((ShapewaysApplication) getApplicationContext()).getShapewaysClient() .getResponse(ShapewaysClient.API_URL_BASE + ShapewaysClient.MATERIALS_PATH); String response = EntityUtils.toString(httpResponse.getEntity()); Log.i(LOG_TAG, "response=" + response); // http://wiki.fasterxml.com/JacksonInFiveMinutes ObjectMapper mapper = new ObjectMapper(); Map<String, Object> map = mapper.readValue(response, Map.class); Log.i(LOG_TAG, "map=" + map); // The response does not use array[] notation for the list of // materials. // So, have to manually parse the JSON to get the list data. MappingJsonFactory f = new MappingJsonFactory(); JsonParser jp = f.createJsonParser(response); Materials materials = new Materials(); materials.setStatusCode(httpResponse.getStatusLine().getStatusCode()); jp.nextToken(); // will return JsonToken.START_OBJECT (verify?) while (jp.nextToken() != JsonToken.END_OBJECT) { String fieldname = jp.getCurrentName(); Log.d(LOG_TAG, "fieldname=" + fieldname); jp.nextToken(); // move to value if ("materials".equals(fieldname)) { // contains an object // Material material = jp.readValueAs(Material.class); boolean end = false; do { Material material = new Material(); while (jp.nextToken() != JsonToken.END_OBJECT) { String namefield = jp.getCurrentName(); Log.d(LOG_TAG, "namefield=" + namefield); jp.nextToken(); // move to value if ("materialId".equals(namefield)) { material.setMaterialId(Integer.parseInt(jp.getText())); } else if ("title".equals(namefield)) { material.setTitle(jp.getText()); } else if ("supportsColorFiles".equals(namefield)) { material.setSupportsColorFiles(Integer.parseInt(jp.getText())); } else if ("printerId".equals(namefield)) { material.setPrinterId(jp.getText()); } else if ("swatch".equals(namefield)) { material.setSwatch(jp.getText()); } else { Log.w(LOG_TAG, "Unrecognized material field: " + namefield); } } materials.getMaterials().add(material); JsonToken token = jp.nextToken(); Log.d(LOG_TAG, "token=" + token); if (token == JsonToken.FIELD_NAME) { try { Integer.parseInt(jp.getCurrentName()); jp.nextToken(); } catch (Exception ex) { end = true; } } else if (token == JsonToken.END_OBJECT) { end = true; } } while (!end); } else if ("result".equals(fieldname)) { if (jp.getText().equals(Result.success.name())) { materials.setResult(Result.success); } else if (jp.getText().equals(Result.failure.name())) { materials.setResult(Result.failure); } } else { Log.w(LOG_TAG, "Unrecognized materials field: " + fieldname); } } jp.close(); // ensure resources get cleaned up timely and properly Log.i(LOG_TAG, "materials=" + materials.getMaterials().size()); Log.i(LOG_TAG, "material: id=" + materials.getMaterials().get(0).getMaterialId()); Log.i(LOG_TAG, "material: title=" + materials.getMaterials().get(0).getTitle()); Log.i(LOG_TAG, "material: swatch=" + materials.getMaterials().get(0).getSwatch()); } catch (Exception e) { Log.e(LOG_TAG, "getMaterials", e); } }
From source file:com.kaaprotech.satu.jackson.SatuDeserializers.java
@Override public JsonDeserializer<?> findMapDeserializer(final MapType type, final DeserializationConfig config, BeanDescription beanDesc, final KeyDeserializer keyDeserializer, final TypeDeserializer elementTypeDeserializer, final JsonDeserializer<?> elementDeserializer) throws JsonMappingException { if (ImmutableMap.class.isAssignableFrom(type.getRawClass())) { return new StdDeserializer<Object>(type) { private static final long serialVersionUID = 1L; @Override//from w ww . j a v a2 s . c o m public Object deserialize(JsonParser jp, DeserializationContext context) throws IOException { JsonToken t = jp.getCurrentToken(); if (t == JsonToken.START_OBJECT) { t = jp.nextToken(); } if (t != JsonToken.FIELD_NAME && t != JsonToken.END_OBJECT) { throw context.mappingException(type.getRawClass()); } MutableMap<Object, Object> m = Maps.mutable.of(); for (; jp.getCurrentToken() == JsonToken.FIELD_NAME; jp.nextToken()) { // Pointing to field name String fieldName = jp.getCurrentName(); Object key = (keyDeserializer == null) ? fieldName : keyDeserializer.deserializeKey(fieldName, context); t = jp.nextToken(); Object value; if (t == JsonToken.VALUE_NULL) { value = null; } else if (elementDeserializer == null) { value = jp.readValueAs(type.getContentType().getRawClass()); } else if (elementTypeDeserializer == null) { value = elementDeserializer.deserialize(jp, context); } else { value = elementDeserializer.deserializeWithType(jp, context, elementTypeDeserializer); } m.put(key, value); } return m.toImmutable(); } }; } return super.findMapDeserializer(type, config, beanDesc, keyDeserializer, elementTypeDeserializer, elementDeserializer); }
From source file:org.apache.manifoldcf.agents.output.amazoncloudsearch.AmazonCloudSearchConnector.java
private String getStatusFromJsonResponse(String responsbody) throws ManifoldCFException { try {/*from www.ja v a2 s . c o m*/ JsonParser parser = new JsonFactory().createJsonParser(responsbody); while (parser.nextToken() != JsonToken.END_OBJECT) { String name = parser.getCurrentName(); if ("status".equalsIgnoreCase(name)) { parser.nextToken(); return parser.getText(); } } } catch (JsonParseException e) { throw new ManifoldCFException(e); } catch (IOException e) { throw new ManifoldCFException(e); } return null; }
From source file:net.nullschool.grains.jackson.datatype.AbstractBasicConstMapDeserializer.java
@Override public T deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException { JsonToken token = jp.getCurrentToken(); if (token == JsonToken.START_OBJECT) { token = jp.nextToken();//from w ww .j a v a 2s.c o m } else if (token != JsonToken.FIELD_NAME) { throw ctxt.mappingException(mapType.getRawClass()); } if (token == JsonToken.END_OBJECT) { return emptyResult(); } KeyDeserializer kd = keyDeserializer; JsonDeserializer<?> vd = valueDeserializer; TypeDeserializer vtd = valueTypeDeserializer; List<Object> keys = null; List<Object> values = null; Object key; Object value; do { String name = jp.getCurrentName(); key = kd == null ? name : kd.deserializeKey(name, ctxt); value = jp.nextToken() != JsonToken.VALUE_NULL ? vtd == null ? vd.deserialize(jp, ctxt) : vd.deserializeWithType(jp, ctxt, vtd) : null; token = jp.nextToken(); if (keys == null) { if (token == JsonToken.END_OBJECT) { return resultOf(key, value); } keys = new ArrayList<>(); values = new ArrayList<>(); } keys.add(key); values.add(value); } while (token != JsonToken.END_OBJECT); return asResult(keys, values); }
From source file:io.protostuff.JsonInput.java
private <T> int readFieldNumber(final Schema<T> schema, final JsonParser parser) throws IOException { for (;;) {//from w w w. j av a 2 s . c om if (parser.nextToken() == END_OBJECT) return 0; if (parser.getCurrentToken() != FIELD_NAME) { throw new JsonInputException("Expected token: $field: but was " + parser.getCurrentToken() + " on message " + schema.messageFullName()); } final String name = parser.getCurrentName(); // move to the next token if (parser.nextToken() == START_ARRAY) { JsonToken jt = parser.nextToken(); // if empty array, read the next field if (jt == END_ARRAY) continue; if (jt == VALUE_NULL) { // skip null elements while (VALUE_NULL == (jt = parser.nextToken())) ; // all elements were null. if (jt == END_ARRAY) continue; } final int number = numeric ? Integer.parseInt(name) : schema.getFieldNumber(name); if (number == 0) { // unknown field if (parser.getCurrentToken().isScalarValue()) { // skip the scalar elements while (parser.nextToken() != END_ARRAY) ; continue; } throw new JsonInputException( "Unknown field: " + name + " on message " + schema.messageFullName()); } lastRepeated = true; lastName = name; lastNumber = number; return number; } // skip null value if (parser.getCurrentToken() == VALUE_NULL) continue; final int number = numeric ? Integer.parseInt(name) : schema.getFieldNumber(name); if (number == 0) { // we can skip this unknown field if (parser.getCurrentToken().isScalarValue()) continue; throw new JsonInputException("Unknown field: " + name + " on message " + schema.messageFullName()); } lastName = name; lastNumber = number; return number; } }
From source file:org.springframework.data.couchbase.core.convert.translation.JacksonTranslationService.java
/** * Helper method to decode an object recursively. * * @param parser the JSON parser with the content. * @param target the target where the content should be stored. * * @throws IOException/*from www . j a va 2 s .com*/ * @returns the decoded object. */ private CouchbaseDocument decodeObject(final JsonParser parser, final CouchbaseDocument target) throws IOException { JsonToken currentToken = parser.nextToken(); String fieldName = ""; while (currentToken != null && currentToken != JsonToken.END_OBJECT) { if (currentToken == JsonToken.START_OBJECT) { target.put(fieldName, decodeObject(parser, new CouchbaseDocument())); } else if (currentToken == JsonToken.START_ARRAY) { target.put(fieldName, decodeArray(parser, new CouchbaseList())); } else if (currentToken == JsonToken.FIELD_NAME) { fieldName = parser.getCurrentName(); } else { target.put(fieldName, decodePrimitive(currentToken, parser)); } currentToken = parser.nextToken(); } return target; }
From source file:name.gumartinm.weather.information.parser.JPOSForecastParser.java
private void getForecastWeatherDataObjects(final Forecast forecastWeatherData, final JsonParser jParser, final String fieldname) throws JsonParseException, IOException { if ("cod".equals(fieldname)) { final String stringCod = jParser.getText(); forecastWeatherData.setCod(Long.valueOf(stringCod)); }//from w ww. java2s .c o m if ("message".equals(fieldname)) { forecastWeatherData.setMessage(jParser.getDoubleValue()); } if ("city".equals(fieldname)) { while (jParser.nextToken() != JsonToken.END_OBJECT) { final String namefield = jParser.getCurrentName(); final JsonToken nextToken = jParser.nextToken(); // move to // value if ("id".equals(namefield)) { forecastWeatherData.getCity().setId(jParser.getLongValue()); } if ("name".equals(namefield)) { forecastWeatherData.getCity().setName(jParser.getText()); } if ("coord".equals(namefield)) { if (nextToken == JsonToken.START_OBJECT) { this.getForecastWeatherDataObjects(forecastWeatherData, jParser, namefield); } } if ("country".equals(namefield)) { forecastWeatherData.getCity().setCountry(jParser.getText()); } if ("population".equals(namefield)) { forecastWeatherData.getCity().setPopulation(jParser.getLongValue()); } } } if ("cnt".equals(fieldname)) { forecastWeatherData.setCnt(jParser.getIntValue()); } if ("coord".equals(fieldname)) { while (jParser.nextToken() != JsonToken.END_OBJECT) { final String namefield = jParser.getCurrentName(); jParser.nextToken(); // move to value if ("lon".equals(namefield)) { forecastWeatherData.getCity().getCoord().setLon(jParser.getDoubleValue()); } if ("lat".equals(namefield)) { forecastWeatherData.getCity().getCoord().setLat(jParser.getDoubleValue()); } } } if ("list".equals(fieldname)) { final name.gumartinm.weather.information.model.forecastweather.List list = new name.gumartinm.weather.information.model.forecastweather.List(); list.setTemp(new Temp()); list.setWeather(new ArrayList<Weather>()); forecastWeatherData.getList().add(list); while (jParser.nextToken() != JsonToken.END_OBJECT) { final String namefield = jParser.getCurrentName(); final JsonToken nextToken = jParser.nextToken(); // move to // value if ("dt".equals(namefield)) { list.setDt(jParser.getLongValue()); } if ("temp".equals(namefield)) { if (nextToken == JsonToken.START_OBJECT) { this.getForecastWeatherDataObjects(forecastWeatherData, jParser, namefield); } } if ("pressure".equals(namefield)) { list.setPressure(jParser.getDoubleValue()); } if ("humidity".equals(namefield)) { list.setHumidity(jParser.getDoubleValue()); } if ("weather".equals(namefield)) { if (nextToken == JsonToken.START_ARRAY) { JsonToken tokenNext = jParser.nextToken(); while (tokenNext != JsonToken.END_ARRAY) { if (tokenNext == JsonToken.START_OBJECT) { this.getForecastWeatherDataObjects(forecastWeatherData, jParser, namefield); } tokenNext = jParser.nextToken(); } } } if ("speed".equals(namefield)) { list.setSpeed(jParser.getDoubleValue()); } if ("deg".equals(namefield)) { list.setDeg(jParser.getDoubleValue()); } if ("clouds".equals(namefield)) { list.setClouds(jParser.getDoubleValue()); } if ("rain".equals(namefield)) { list.setRain(jParser.getDoubleValue()); } } } if ("temp".equals(fieldname)) { final name.gumartinm.weather.information.model.forecastweather.List list = forecastWeatherData.getList() .get((forecastWeatherData.getList().size() - 1)); while (jParser.nextToken() != JsonToken.END_OBJECT) { final String namefield = jParser.getCurrentName(); jParser.nextToken(); // move to value if ("day".equals(namefield)) { list.getTemp().setDay(jParser.getDoubleValue()); } if ("min".equals(namefield)) { list.getTemp().setMin(jParser.getDoubleValue()); } if ("max".equals(namefield)) { list.getTemp().setMax(jParser.getDoubleValue()); } if ("night".equals(namefield)) { list.getTemp().setNight(jParser.getDoubleValue()); } if ("eve".equals(namefield)) { list.getTemp().setEve(jParser.getDoubleValue()); } if ("morn".equals(namefield)) { list.getTemp().setMorn(jParser.getDoubleValue()); } } } if ("weather".equals(fieldname)) { final name.gumartinm.weather.information.model.forecastweather.List list = forecastWeatherData.getList() .get((forecastWeatherData.getList().size() - 1)); final Weather weather = new Weather(); while (jParser.nextToken() != JsonToken.END_OBJECT) { final String namefield = jParser.getCurrentName(); jParser.nextToken(); // move to value if ("id".equals(namefield)) { weather.setId(jParser.getIntValue()); } if ("main".equals(namefield)) { weather.setMain(jParser.getText()); } if ("description".equals(namefield)) { weather.setDescription(jParser.getText()); } if ("icon".equals(namefield)) { weather.setIcon(jParser.getText()); } } list.getWeather().add(weather); } }
From source file:org.debezium.core.doc.JacksonReader.java
private Document parseDocument(JsonParser parser, boolean nested) throws IOException { // Iterate over the fields in the top-level document ... BasicDocument doc = new BasicDocument(); JsonToken token = null;//from w w w.ja v a 2s .co m if (!nested) { // We expect the START_OBJECT token ... token = parser.nextToken(); if (!nested && token != JsonToken.START_OBJECT) { throw new IOException("Expected data to start with an Object, but was " + token); } } String fieldName = null; token = parser.nextToken(); while (token != JsonToken.END_OBJECT) { switch (token) { case FIELD_NAME: fieldName = parser.getCurrentName(); break; case START_OBJECT: doc.setDocument(fieldName, parseDocument(parser, true)); break; case START_ARRAY: doc.setArray(fieldName, parseArray(parser)); break; case VALUE_STRING: doc.setString(fieldName, parser.getValueAsString()); break; case VALUE_TRUE: doc.setBoolean(fieldName, true); break; case VALUE_FALSE: doc.setBoolean(fieldName, false); break; case VALUE_NULL: doc.setNull(fieldName); break; case VALUE_NUMBER_FLOAT: case VALUE_NUMBER_INT: switch (parser.getNumberType()) { case FLOAT: doc.setNumber(fieldName, parser.getFloatValue()); break; case DOUBLE: doc.setNumber(fieldName, parser.getDoubleValue()); break; case BIG_DECIMAL: doc.setNumber(fieldName, parser.getDecimalValue()); break; case INT: doc.setNumber(fieldName, parser.getIntValue()); break; case LONG: doc.setNumber(fieldName, parser.getLongValue()); break; case BIG_INTEGER: doc.setNumber(fieldName, parser.getBigIntegerValue()); break; } break; case VALUE_EMBEDDED_OBJECT: // disregard this, since it's an extension ... break; case NOT_AVAILABLE: throw new JsonParseException("Non-blocking parsers are not supported", parser.getCurrentLocation()); case END_ARRAY: throw new JsonParseException("Not expecting an END_ARRAY token", parser.getCurrentLocation()); case END_OBJECT: throw new JsonParseException("Not expecting an END_OBJECT token", parser.getCurrentLocation()); } token = parser.nextToken(); } return doc; }
From source file:io.debezium.document.JacksonReader.java
private Document parseDocument(JsonParser parser, boolean nested) throws IOException { // Iterate over the fields in the top-level document ... BasicDocument doc = new BasicDocument(); JsonToken token = null;//from w w w . ja v a 2 s . co m if (!nested) { // We expect the START_OBJECT token ... token = parser.nextToken(); if (!nested && token != JsonToken.START_OBJECT) { throw new IOException("Expected data to start with an Object, but was " + token); } } String fieldName = null; token = parser.nextToken(); while (token != JsonToken.END_OBJECT) { switch (token) { case FIELD_NAME: fieldName = parser.getCurrentName(); break; case START_OBJECT: doc.setDocument(fieldName, parseDocument(parser, true)); break; case START_ARRAY: doc.setArray(fieldName, parseArray(parser, true)); break; case VALUE_STRING: doc.setString(fieldName, parser.getValueAsString()); break; case VALUE_TRUE: doc.setBoolean(fieldName, true); break; case VALUE_FALSE: doc.setBoolean(fieldName, false); break; case VALUE_NULL: doc.setNull(fieldName); break; case VALUE_NUMBER_FLOAT: case VALUE_NUMBER_INT: switch (parser.getNumberType()) { case FLOAT: doc.setNumber(fieldName, parser.getFloatValue()); break; case DOUBLE: doc.setNumber(fieldName, parser.getDoubleValue()); break; case BIG_DECIMAL: doc.setNumber(fieldName, parser.getDecimalValue()); break; case INT: doc.setNumber(fieldName, parser.getIntValue()); break; case LONG: doc.setNumber(fieldName, parser.getLongValue()); break; case BIG_INTEGER: doc.setNumber(fieldName, parser.getBigIntegerValue()); break; } break; case VALUE_EMBEDDED_OBJECT: // disregard this, since it's an extension ... break; case NOT_AVAILABLE: throw new JsonParseException("Non-blocking parsers are not supported", parser.getCurrentLocation()); case END_ARRAY: throw new JsonParseException("Not expecting an END_ARRAY token", parser.getCurrentLocation()); case END_OBJECT: throw new JsonParseException("Not expecting an END_OBJECT token", parser.getCurrentLocation()); } token = parser.nextToken(); } return doc; }
From source file:com.adobe.communities.ugc.migration.importer.ImportFileUploadServlet.java
/** * Handle each of the importable types of ugc content * @param jsonParser - the parsing stream * @param resource - the parent resource of whatever it is we're importing (must already exist) * @throws ServletException/*w ww.j ava 2 s.c o m*/ * @throws IOException */ private void importFile(final JsonParser jsonParser, final Resource resource, final ResourceResolver resolver) throws ServletException, IOException { final UGCImportHelper importHelper = new UGCImportHelper(); JsonToken token1 = jsonParser.getCurrentToken(); if (token1.equals(JsonToken.START_OBJECT)) { jsonParser.nextToken(); if (jsonParser.getCurrentName().equals(ContentTypeDefinitions.LABEL_CONTENT_TYPE)) { jsonParser.nextToken(); final String contentType = jsonParser.getValueAsString(); if (contentType.equals(ContentTypeDefinitions.LABEL_QNA_FORUM)) { importHelper.setQnaForumOperations(qnaForumOperations); } else if (contentType.equals(ContentTypeDefinitions.LABEL_FORUM)) { importHelper.setForumOperations(forumOperations); } else if (contentType.equals(ContentTypeDefinitions.LABEL_COMMENTS)) { importHelper.setCommentOperations(commentOperations); } else if (contentType.equals(ContentTypeDefinitions.LABEL_CALENDAR)) { importHelper.setCalendarOperations(calendarOperations); } else if (contentType.equals(ContentTypeDefinitions.LABEL_JOURNAL)) { importHelper.setJournalOperations(journalOperations); } else if (contentType.equals(ContentTypeDefinitions.LABEL_TALLY)) { importHelper.setSocialUtils(socialUtils); } importHelper.setTallyService(tallyOperationsService); // (everything potentially needs tally) jsonParser.nextToken(); // content if (jsonParser.getCurrentName().equals(ContentTypeDefinitions.LABEL_CONTENT)) { jsonParser.nextToken(); token1 = jsonParser.getCurrentToken(); if (token1.equals(JsonToken.START_OBJECT) || token1.equals(JsonToken.START_ARRAY)) { if (!resolver.isLive()) { throw new ServletException("Resolver is already closed"); } } else { throw new ServletException("Start object token not found for content"); } if (token1.equals(JsonToken.START_OBJECT)) { try { if (contentType.equals(ContentTypeDefinitions.LABEL_QNA_FORUM)) { importHelper.importQnaContent(jsonParser, resource, resolver); } else if (contentType.equals(ContentTypeDefinitions.LABEL_FORUM)) { importHelper.importForumContent(jsonParser, resource, resolver); } else if (contentType.equals(ContentTypeDefinitions.LABEL_COMMENTS)) { importHelper.importCommentsContent(jsonParser, resource, resolver); } else if (contentType.equals(ContentTypeDefinitions.LABEL_JOURNAL)) { importHelper.importJournalContent(jsonParser, resource, resolver); } else { LOG.info("Unsupported content type: {}", contentType); jsonParser.skipChildren(); } jsonParser.nextToken(); } catch (final IOException e) { throw new ServletException(e); } jsonParser.nextToken(); // skip over END_OBJECT } else { try { if (contentType.equals(ContentTypeDefinitions.LABEL_CALENDAR)) { importHelper.importCalendarContent(jsonParser, resource); } else if (contentType.equals(ContentTypeDefinitions.LABEL_TALLY)) { importHelper.importTallyContent(jsonParser, resource); } else { LOG.info("Unsupported content type: {}", contentType); jsonParser.skipChildren(); } jsonParser.nextToken(); } catch (final IOException e) { throw new ServletException(e); } jsonParser.nextToken(); // skip over END_ARRAY } } else { throw new ServletException("Content not found"); } } else { throw new ServletException("No content type specified"); } } else { throw new ServletException("Invalid Json format"); } }