List of usage examples for com.fasterxml.jackson.core JsonToken START_OBJECT
JsonToken START_OBJECT
To view the source code for com.fasterxml.jackson.core JsonToken START_OBJECT.
Click Source Link
From source file:org.agorava.linkedin.jackson.DeserializationUtils.java
public static <T> T deserializeFromDataNode(JsonParser jp, DeserializationContext ctxt, String propertyName, TypeReference<T> typeReference) throws IOException, JsonProcessingException { if (jp.hasCurrentToken() && jp.getCurrentToken().equals(JsonToken.START_OBJECT)) { JsonNode dataNode = jp.readValueAs(JsonNode.class); if (dataNode.has(propertyName)) { return OBJECT_MAPPER.reader(typeReference).<T>readValue(dataNode.get(propertyName)); }/*from w w w . j av a 2 s .co m*/ return null; } throw ctxt.mappingException("Expected JSON object"); }
From source file:com.google.openrtb.json.OpenRtbJsonUtils.java
/** * Starts an Object, skipping the '{' token, and if necessary a field name before it. *//*from ww w .ja v a 2s . c o m*/ public static void startObject(JsonParser par) throws IOException { JsonToken token = par.getCurrentToken(); if (token == null || token == JsonToken.FIELD_NAME) { token = par.nextToken(); } if (token == JsonToken.START_OBJECT) { par.nextToken(); } else { throw new JsonParseException(par, "Expected start of object"); } }
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);// 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:com.taveloper.http.test.JsonParseManual.java
public ActivityFeed parseManual(InputStream bais, JsonReaderable readerable) throws IOException { StreamParseUtil.startParsing(parser); JsonToken currentToken = parser.getCurrentToken(); if (currentToken == JsonToken.START_OBJECT) { // System.out.println("JsonToken.START_OBJECT"); return (ActivityFeed) readerable.readJson(parser); } else if (currentToken == JsonToken.START_ARRAY) { System.out.println("JsonToken.START_ARRAY"); }//from w ww. j a va 2 s. com bais.close(); return null; }
From source file:org.springframework.social.linkedin.api.impl.json.CodeDeserializer.java
@Override public String deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { if (jp.hasCurrentToken() && jp.getCurrentToken().equals(JsonToken.START_OBJECT)) { ObjectMapper mapper = new ObjectMapper(); JsonNode node = mapper.reader(JsonNode.class).readValue(jp); return node.has(VALUE) ? node.get(VALUE).textValue() : null; }//from w w w. j av a 2 s . com throw ctxt.mappingException("Expected JSON object"); }
From source file:org.emfjson.jackson.databind.deser.EMapDeserializer.java
@Override @SuppressWarnings("unchecked") public EList<Map.Entry<?, ?>> deserialize(JsonParser jp, DeserializationContext ctxt, EList<Map.Entry<?, ?>> intoValue) throws IOException { final EReference reference = EMFContext.getReference(ctxt); if (jp.getCurrentToken() == JsonToken.START_OBJECT) { while (jp.nextToken() != JsonToken.END_OBJECT) { final String key = jp.getCurrentName(); jp.nextToken();//from w w w .jav a 2 s . co m final Object value; if (jp.getCurrentToken() == JsonToken.START_OBJECT) { value = ctxt.readValue(jp, EObject.class); } else { value = ctxt.readValue(jp, Object.class); } // Dynamic objects do not use the EMap interface // but store entries in a DynamicEList instead. if (intoValue instanceof EMap) { ((EMap) intoValue).put(key, value); } else if (reference != null) { intoValue .add((Map.Entry<?, ?>) EObjects.createEntry(key, value, reference.getEReferenceType())); } } } return intoValue; }
From source file:com.basho.riak.client.raw.http.NamedJSFunctionDeserializer.java
@Override public NamedJSFunction deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { JsonToken token = jp.getCurrentToken(); if (JsonToken.START_OBJECT.equals(token)) { String name = null;/*from w w w . j a va2 s . co m*/ while (!JsonToken.END_OBJECT.equals(token)) { String field = jp.getCurrentName(); if (Constants.FL_SCHEMA_FUN_NAME.equals(field)) { jp.nextToken(); name = jp.getText(); } token = jp.nextToken(); } if (name != null) { return new NamedJSFunction(name); } else { return null; } } throw ctxt.mappingException(NamedJSFunction.class); }
From source file:org.springframework.social.linkedin.api.impl.json.ConnectionAuthorizationDeserializer.java
public ConnectionAuthorization deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(new LinkedInModule()); if (jp.hasCurrentToken() && jp.getCurrentToken().equals(JsonToken.START_OBJECT)) { JsonNode dataNode = jp.readValueAs(JsonNode.class).get("headers").get("values").get(0); if (dataNode != null) { return mapper.reader(new TypeReference<ConnectionAuthorization>() { }).readValue(dataNode);/*from ww w.jav a 2 s .c om*/ } } throw ctxt.mappingException("Expected JSON object"); }
From source file:com.basistech.rosette.dm.jackson.ListAttributeDeserializer.java
@Override @SuppressWarnings("unchecked") public ListAttribute deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException { if (jp.getCurrentToken() == JsonToken.START_OBJECT) { // this is what we expect. // we advance to be in the same place the 'else' will be -- the first FIELD_NAME. jp.nextToken();/*from ww w.ja va2s . c om*/ } else { /* In a full AnnotatedText, which is already doing some polymorphism shuffling, we end up here. */ /* We find a FIELD_NAME for the first field of the object */ if (jp.getCurrentToken() != JsonToken.FIELD_NAME) { throw ctxt.wrongTokenException(jp, JsonToken.START_OBJECT, "ListAttributeDeserializer called not at or FIELD_NAME of first field"); } /* We are at the field name, ready for the loop. */ } TokenBuffer tb = null; for (JsonToken t = jp.getCurrentToken(); t == JsonToken.FIELD_NAME; t = jp.nextToken()) { String name = jp.getCurrentName(); if ("itemType".equals(name)) { // gotcha! return deserialize(jp, ctxt, tb); } if (tb == null) { tb = new TokenBuffer(null, false); } tb.copyCurrentStructure(jp); } throw ctxt.mappingException("No itemType provided in a list"); }
From source file:org.agorava.linkedin.jackson.ConnectionAuthorizationDeserializer.java
@Override public ConnectionAuthorization deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { ObjectMapper mapper = BeanResolver.getInstance().resolve(ObjectMapper.class); if (jp.hasCurrentToken() && jp.getCurrentToken().equals(JsonToken.START_OBJECT)) { JsonNode dataNode = jp.readValueAs(JsonNode.class).get("headers").get("values").get(0); if (dataNode != null) { return mapper.reader(new TypeReference<ConnectionAuthorization>() { }).readValue(dataNode);/*from w w w .ja v a 2 s .c o m*/ } } throw ctxt.mappingException("Expected JSON object"); }