List of usage examples for com.fasterxml.jackson.core JsonParser nextToken
public abstract JsonToken nextToken() throws IOException, JsonParseException;
From source file:net.nullschool.grains.jackson.datatype.GrainDeserializer.java
@Override public Grain deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException { JsonToken token = jp.getCurrentToken(); if (token == JsonToken.START_OBJECT) { token = jp.nextToken(); } else if (token != JsonToken.FIELD_NAME) { throw ctxt.mappingException(getValueClass()); }//from w ww .jav a 2 s. c om if (token == JsonToken.END_OBJECT) { return factory.getDefaultValue(); } GrainBuilder builder = factory.getNewBuilder(); do { String key = jp.getCurrentName(); PropertyReader reader = readers.get(key); token = jp.nextToken(); Object value; if (token == JsonToken.VALUE_NULL) { value = null; } else if (reader != null) { value = reader.deserializer.deserialize(jp, ctxt); } else { switch (token) { case START_ARRAY: value = extArrayDeserializer.deserialize(jp, ctxt); break; case START_OBJECT: value = extObjectDeserializer.deserialize(jp, ctxt); break; default: value = extValueDeserializer.deserialize(jp, ctxt); } } builder.put(key, value); } while (jp.nextToken() == JsonToken.FIELD_NAME); return builder.build(); }
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./*from w ww. j a va 2s.com*/ */ @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:com.cinnober.msgcodec.json.JsonValueHandlerTest.java
@Test public void testSafeUInt64DecodeMaxUInt64() throws IOException { JsonParser p = f.createParser("\"18446744073709551615\""); p.nextToken(); assertEquals(-1L, JsonValueHandler.UINT64_SAFE.readValue(p).longValue()); }
From source file:com.cinnober.msgcodec.json.TypeScannerJsonParserTest.java
@Test public void testNested1() throws IOException { JsonParser p = new JsonFactory() .createParser("{\"a\":{\"c\":2, \"$type\":\"y\", \"d\":2.1}, \"$type\":\"x\", \"b\":1.1}"); p.nextToken(); // START_OBJECT p.nextToken(); // FIELD_NAME TypeScannerJsonParser p2 = new TypeScannerJsonParser(p); assertEquals("x", p2.findType()); assertNextField("a", p2); assertEquals(JsonToken.START_OBJECT, p2.nextToken()); // start nested object p2.nextToken(); // FIELD_NAME assertEquals("y", p2.findType()); assertNextField("c", p2); assertNextIntValue(2, p2);//ww w . j a v a2s.com assertNextField("d", p2); assertNextFloatValue(2.1, p2); assertEquals(JsonToken.END_OBJECT, p2.nextToken()); // end nested object assertNextField("b", p2); assertNextFloatValue(1.1, p2); assertEquals(JsonToken.END_OBJECT, p2.nextToken()); assertNull(p2.nextToken()); }
From source file:com.cinnober.msgcodec.json.TypeScannerJsonParserTest.java
@Test public void testNested2() throws IOException { JsonParser p = new JsonFactory() .createParser("{\"a\":{\"c\":2, \"d\":2.1, \"$type\":\"y\"}, \"$type\":\"x\", \"b\":1.1}"); p.nextToken(); // START_OBJECT p.nextToken(); // FIELD_NAME TypeScannerJsonParser p2 = new TypeScannerJsonParser(p); assertEquals("x", p2.findType()); assertNextField("a", p2); assertEquals(JsonToken.START_OBJECT, p2.nextToken()); // start nested object p2.nextToken(); // FIELD_NAME assertEquals("y", p2.findType()); assertNextField("c", p2); assertNextIntValue(2, p2);// ww w. j a v a 2 s . com assertNextField("d", p2); assertNextFloatValue(2.1, p2); assertEquals(JsonToken.END_OBJECT, p2.nextToken()); // end nested object assertNextField("b", p2); assertNextFloatValue(1.1, p2); assertEquals(JsonToken.END_OBJECT, p2.nextToken()); assertNull(p2.nextToken()); }
From source file:com.cinnober.msgcodec.json.TypeScannerJsonParserTest.java
@Test public void testNested3() throws IOException { JsonParser p = new JsonFactory() .createParser("{\"a\":{\"$type\":\"y\", \"c\":2, \"d\":2.1}, \"$type\":\"x\", \"b\":1.1}"); p.nextToken(); // START_OBJECT p.nextToken(); // FIELD_NAME TypeScannerJsonParser p2 = new TypeScannerJsonParser(p); assertEquals("x", p2.findType()); assertNextField("a", p2); assertEquals(JsonToken.START_OBJECT, p2.nextToken()); // start nested object p2.nextToken(); // FIELD_NAME assertEquals("y", p2.findType()); assertNextField("c", p2); assertNextIntValue(2, p2);/*from w ww . ja v a 2 s. com*/ assertNextField("d", p2); assertNextFloatValue(2.1, p2); assertEquals(JsonToken.END_OBJECT, p2.nextToken()); // end nested object assertNextField("b", p2); assertNextFloatValue(1.1, p2); assertEquals(JsonToken.END_OBJECT, p2.nextToken()); assertNull(p2.nextToken()); }
From source file:com.msopentech.odatajclient.engine.data.metadata.edm.v4.NavigationPropertyDeserializer.java
@Override protected NavigationProperty doDeserialize(final JsonParser jp, final DeserializationContext ctxt) throws IOException, JsonProcessingException { final NavigationProperty property = new NavigationProperty(); for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) { final JsonToken token = jp.getCurrentToken(); if (token == JsonToken.FIELD_NAME) { if ("Name".equals(jp.getCurrentName())) { property.setName(jp.nextTextValue()); } else if ("Type".equals(jp.getCurrentName())) { property.setType(jp.nextTextValue()); } else if ("Nullable".equals(jp.getCurrentName())) { property.setNullable(BooleanUtils.toBoolean(jp.nextTextValue())); } else if ("Partner".equals(jp.getCurrentName())) { property.setPartner(jp.nextTextValue()); } else if ("ContainsTarget".equals(jp.getCurrentName())) { property.setContainsTarget(BooleanUtils.toBoolean(jp.nextTextValue())); } else if ("ReferentialConstraint".equals(jp.getCurrentName())) { jp.nextToken();//ww w. j a v a2s . c o m property.getReferentialConstraints() .add(jp.getCodec().readValue(jp, ReferentialConstraint.class)); } else if ("OnDelete".equals(jp.getCurrentName())) { jp.nextToken(); property.setOnDelete(jp.getCodec().readValue(jp, OnDelete.class)); } else if ("Annotation".equals(jp.getCurrentName())) { jp.nextToken(); property.setAnnotation(jp.getCodec().readValue(jp, Annotation.class)); } } } return property; }
From source file:com.redhat.red.build.koji.model.json.util.MavenGAVDeserializer.java
@Override public SimpleProjectVersionRef deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { String g = null;//from ww w.j a va2s. c o m String a = null; String v = null; JsonToken token = null; while ((token = jp.nextToken()) != JsonToken.END_OBJECT) { if (token == JsonToken.VALUE_STRING) { String field = jp.getCurrentName(); switch (field) { case ("group_id"): { g = jp.getText(); break; } case ("artifact_id"): { a = jp.getText(); break; } case ("version"): { v = jp.getText(); break; } default: { Logger logger = LoggerFactory.getLogger(getClass()); logger.debug("Ignoring unknown field: {}", field); } } } } if (isEmpty(g) || isEmpty(a) || isEmpty(v)) { throw new KojiJsonException("Invalid GAV: " + g + ":" + a + ":" + v); } return new SimpleProjectVersionRef(g, a, v); }
From source file:javaslang.jackson.datatype.deserialize.TupleDeserializer.java
@Override public Tuple deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException { List<Object> list = new ArrayList<>(); int ptr = 0;/*from w ww . ja va 2 s . com*/ for (JsonToken jsonToken = p.nextToken(); jsonToken != END_ARRAY; jsonToken = p.nextToken()) { if (ptr >= deserializersCount()) { throw ctxt.mappingException(javaType.getRawClass()); } JsonDeserializer<?> deserializer = deserializer(ptr++); Object value = (jsonToken != VALUE_NULL) ? deserializer.deserialize(p, ctxt) : deserializer.getNullValue(ctxt); list.add(value); } return create(list, ctxt); }
From source file:nl.talsmasoftware.enumerables.support.json.jackson2.EnumerableDeserializer.java
private Enumerable parseObject(JsonParser jp, Class<? extends Enumerable> type) throws IOException { Enumerable value = null;// ww w .j a v a2 s . c om while (true) { final JsonToken nextToken = jp.nextToken(); if (nextToken == null) throw new IllegalStateException("JSON stream ended while parsing an Enumerable object."); switch (nextToken) { case VALUE_NULL: case VALUE_STRING: if (value == null && "value".equals(jp.getCurrentName())) { value = Enumerable.parse(type, jp.getText()); } break; case END_OBJECT: jp.clearCurrentToken(); if (value == null) throw new IllegalStateException( "Attribute \"value\" is required to parse an Enumerable JSON object."); return value; case START_ARRAY: case START_OBJECT: jp.skipChildren(); jp.clearCurrentToken(); break; } } }