List of usage examples for com.fasterxml.jackson.core JsonParser getCurrentToken
public abstract JsonToken getCurrentToken();
From source file:org.springframework.data.couchbase.core.convert.translation.JacksonTranslationService.java
/** * Decode a JSON string into the {@link CouchbaseStorable} structure. * * @param source the source formatted document. * @param target the target of the populated data. * * @return the decoded structure.// w w w. jav a 2s .c o m */ @Override public final CouchbaseStorable decode(final Object source, final CouchbaseStorable target) { try { JsonParser parser = factory.createParser((String) source); while (parser.nextToken() != null) { JsonToken currentToken = parser.getCurrentToken(); if (currentToken == JsonToken.START_OBJECT) { return decodeObject(parser, (CouchbaseDocument) target); } else if (currentToken == JsonToken.START_ARRAY) { return decodeArray(parser, new CouchbaseList()); } else { throw new MappingException("JSON to decode needs to start as array or object!"); } } parser.close(); } catch (IOException ex) { throw new RuntimeException("Could not decode JSON", ex); } return target; }
From source file:no.ssb.jsonstat.v2.deser.DimensionDeserializer.java
@Override public Dimension.Builder deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException { // Get the name first. String name = parseName(p, ctxt); if (p.getCurrentToken() == JsonToken.START_OBJECT) { p.nextToken();//from ww w . j a va 2s.com } Dimension.Builder dimension; dimension = Dimension.create(name); while (p.nextValue() != JsonToken.END_OBJECT) { switch (p.getCurrentName()) { case "category": parseCategory(dimension, p, ctxt); break; case "label": dimension.withLabel(parseLabel(p, ctxt)); break; default: ctxt.handleUnknownProperty(p, this, Dimension.Builder.class, p.getCurrentName()); break; } } return dimension; }
From source file:no.ssb.jsonstat.v2.deser.DatasetDeserializer.java
@Override public DatasetBuildable deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { if (p.getCurrentToken() == JsonToken.START_OBJECT) { p.nextToken();/*from w w w. ja v a2s . c o m*/ } Set<String> ids = Collections.emptySet(); List<Integer> sizes = Collections.emptyList(); Multimap<String, String> roles = ArrayListMultimap.create(); Map<String, Dimension.Builder> dims = Collections.emptyMap(); List<Number> values = Collections.emptyList(); DatasetBuilder builder = Dataset.create(); Optional<String> version = Optional.empty(); Optional<String> clazz = Optional.empty(); Optional<ObjectNode> extension = Optional.empty(); while (p.nextValue() != JsonToken.END_OBJECT) { switch (p.getCurrentName()) { case "label": builder.withLabel(_parseString(p, ctxt)); break; case "source": builder.withSource(_parseString(p, ctxt)); break; case "href": break; case "updated": Instant updated = parseEcmaDate(_parseString(p, ctxt)); builder.updatedAt(updated); break; case "value": values = parseValues(p, ctxt); break; case "dimension": if (!version.orElse("1.x").equals("2.0")) { dims = Maps.newHashMap(); // Deal with the id, size and role inside dimension. while (p.nextValue() != JsonToken.END_OBJECT) { switch (p.getCurrentName()) { case "id": ids = p.readValueAs(ID_SET); break; case "size": sizes = p.readValueAs(SIZE_LIST); break; case "role": roles = p.readValueAs(ROLE_MULTIMAP); break; default: dims.put(p.getCurrentName(), ctxt.readValue(p, Dimension.Builder.class)); } } } else { dims = p.readValueAs(DIMENSION_MAP); } break; case "id": ids = p.readValueAs(ID_SET); break; case "size": sizes = p.readValueAs(SIZE_LIST); break; case "role": roles = p.readValueAs(ROLE_MULTIMAP); break; case "extension": extension = Optional.of(ctxt.readValue(p, ObjectNode.class)); break; case "link": case "status": // TODO p.skipChildren(); break; case "version": version = Optional.of(_parseString(p, ctxt)); break; case "class": // TODO clazz = Optional.of(_parseString(p, ctxt)); break; default: boolean handled = ctxt.handleUnknownProperty(p, this, Dimension.Builder.class, p.getCurrentName()); if (!handled) p.skipChildren(); break; } } // Setup roles for (Map.Entry<String, String> dimRole : roles.entries()) { Dimension.Roles role = Dimension.Roles.valueOf(dimRole.getKey().toUpperCase()); Dimension.Builder dimension = checkNotNull(dims.get(dimRole.getValue()), "could not assign the role {} to the dimension {}. The dimension did not exist", role, dimRole.getValue() ); dimension.withRole(role); } List<Dimension.Builder> orderedDimensions = Lists.newArrayList(); for (String dimensionName : ids) { orderedDimensions.add(dims.get(dimensionName)); } // TODO: Check size? // Check ids and add to the data set. checkArgument(ids.size() == dims.size(), "dimension and size did not match"); if (extension.isPresent()) { builder.withExtension(extension.get()); } return builder.withDimensions(orderedDimensions).withValues(values); }
From source file:net.floodlightcontroller.loadbalancer.MembersResource.java
protected LBMember jsonToMember(String json) throws IOException { MappingJsonFactory f = new MappingJsonFactory(); JsonParser jp; LBMember member = new LBMember(); try {/*w w w . j ava 2s .c om*/ jp = f.createJsonParser(json); } catch (JsonParseException e) { throw new IOException(e); } jp.nextToken(); if (jp.getCurrentToken() != JsonToken.START_OBJECT) { throw new IOException("Expected START_OBJECT"); } while (jp.nextToken() != JsonToken.END_OBJECT) { if (jp.getCurrentToken() != JsonToken.FIELD_NAME) { throw new IOException("Expected FIELD_NAME"); } String n = jp.getCurrentName(); jp.nextToken(); if (jp.getText().equals("")) continue; if (n.equals("id")) { member.id = jp.getText(); continue; } else if (n.equals("address")) { member.address = IPv4.toIPv4Address(jp.getText()); continue; } else if (n.equals("port")) { member.port = Short.parseShort(jp.getText()); continue; } else if (n.equals("connection_limit")) { member.connectionLimit = Integer.parseInt(jp.getText()); continue; } else if (n.equals("admin_state")) { member.adminState = Short.parseShort(jp.getText()); continue; } else if (n.equals("status")) { member.status = Short.parseShort(jp.getText()); continue; } else if (n.equals("pool_id")) { member.poolId = jp.getText(); continue; } log.warn("Unrecognized field {} in " + "parsing Members", jp.getText()); } jp.close(); return member; }
From source file:com.pursuer.reader.easyrss.data.parser.SubscriptionJSONParser.java
public void parse() throws JsonParseException, IOException, IllegalStateException { final JsonFactory factory = new JsonFactory(); final JsonParser parser = factory.createJsonParser(input); Subscription sub = new Subscription(); 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++;/* ww w . j ava 2 s . c o m*/ break; case END_OBJECT: case END_ARRAY: level--; break; case VALUE_STRING: if (level == 3) { if ("id".equals(name)) { sub.setUid(parser.getText()); } else if ("htmlUrl".equals(name)) { sub.setUrl(parser.getText()); } else if ("title".equals(name)) { sub.setTitle(Html.fromHtml(parser.getText()).toString()); } else if ("sortid".equals(name)) { sub.setSortId(parser.getText()); } else if ("firstitemmsec".equals(name)) { sub.setFirstItemMsec(Long.valueOf(parser.getText())); } } else if (level == 5 && "id".equals(name)) { sub.addTag(parser.getText()); } break; case FIELD_NAME: if (level == 1 && "subscriptions".equals(name)) { found = true; } break; default: } if (level == 2) { if (sub.getUid() != null && listener != null) { listener.onSubscriptionRetrieved(sub); } sub = new Subscription(); } } parser.close(); if (!found) { throw new IllegalStateException("Invalid JSON input"); } }
From source file:com.sdl.odata.renderer.json.writer.JsonPropertyWriterTest.java
private List<Object> getJsonArray(JsonParser jsonParser) throws IOException { List<Object> objects = new ArrayList<>(); while (jsonParser.nextToken() != JsonToken.END_ARRAY) { if (jsonParser.getCurrentToken() == JsonToken.START_OBJECT) { Map<String, String> jsonObject = getJsonObject(jsonParser); objects.add(jsonObject);//from w w w. ja v a 2 s.c o m } else { objects.add(jsonParser.getText()); } } return objects; }
From source file:io.pdef.json.JsonJacksonFormat.java
private List<?> readArray(final JsonParser parser) throws IOException { JsonToken current = parser.getCurrentToken(); if (current != JsonToken.START_ARRAY) { throw new JsonFormatException("Bad JSON string, failed to read an array"); }/* ww w . j a v a 2 s . c o m*/ List<Object> list = new ArrayList<Object>(); while (true) { JsonToken next = parser.nextToken(); if (next == null) { throw new JsonFormatException("End of file"); } else if (next == JsonToken.END_ARRAY) { break; } Object element = read(parser); list.add(element); } return list; }
From source file:de.konqi.fitapi.auth.PublicKeysManager.java
/** * Forces a refresh of the public certificates downloaded from {@link #getPublicCertsEncodedUrl}. * * <p>/*from www . ja v a2 s . c o m*/ * This method is automatically called from {@link #getPublicKeys()} if the public keys have not * yet been initialized or if the expiration time is very close, so normally this doesn't need to * be called. Only call this method to explicitly force the public keys to be updated. * </p> */ public PublicKeysManager refresh() throws GeneralSecurityException, IOException { lock.lock(); try { publicKeys = new ArrayList<PublicKey>(); // HTTP request to public endpoint CertificateFactory factory = SecurityUtils.getX509CertificateFactory(); HttpResponse certsResponse = transport.createRequestFactory() .buildGetRequest(new GenericUrl(publicCertsEncodedUrl)).execute(); expirationTimeMilliseconds = clock.currentTimeMillis() + getCacheTimeInSec(certsResponse.getHeaders()) * 1000; // parse each public key in the JSON response JsonParser parser = jsonFactory.createJsonParser(certsResponse.getContent()); JsonToken currentToken = parser.getCurrentToken(); // token is null at start, so get next token if (currentToken == null) { currentToken = parser.nextToken(); } Preconditions.checkArgument(currentToken == JsonToken.START_OBJECT); try { while (parser.nextToken() != JsonToken.END_OBJECT) { parser.nextToken(); String certValue = parser.getText(); X509Certificate x509Cert = (X509Certificate) factory .generateCertificate(new ByteArrayInputStream(StringUtils.getBytesUtf8(certValue))); publicKeys.add(x509Cert.getPublicKey()); } publicKeys = Collections.unmodifiableList(publicKeys); } finally { parser.close(); } return this; } finally { lock.unlock(); } }
From source file:io.pdef.json.JsonJacksonFormat.java
private Map<String, Object> readMap(final JsonParser parser) throws IOException { JsonToken current = parser.getCurrentToken(); if (current != JsonToken.START_OBJECT) { throw new JsonFormatException("Bad JSON string, failed to read an object"); }//from w ww . j a va 2 s.c o m Map<String, Object> map = new LinkedHashMap<String, Object>(); while (true) { JsonToken next = parser.nextToken(); if (next == null) { throw new JsonFormatException("End of file"); } else if (next == JsonToken.END_OBJECT) { break; } else if (next != JsonToken.FIELD_NAME) { throw new JsonFormatException("Failed to read a field name from " + next); } String field = parser.getCurrentName(); parser.nextToken(); Object value = read(parser); map.put(field, value); } return map; }
From source file:io.pdef.json.JsonJacksonFormat.java
private Object read(final JsonParser parser) throws IOException { JsonToken current = parser.getCurrentToken(); if (current == null || current == JsonToken.VALUE_NULL) { return null; }/*from ww w . j a va 2 s . c o m*/ switch (current) { case VALUE_NULL: return null; case VALUE_TRUE: return true; case VALUE_FALSE: return false; case VALUE_STRING: return parser.getValueAsString(); case VALUE_NUMBER_INT: case VALUE_NUMBER_FLOAT: return parser.getNumberValue(); case START_ARRAY: return readArray(parser); case START_OBJECT: return readMap(parser); default: throw new JsonFormatException("Bad JSON string"); } }