Example usage for com.fasterxml.jackson.databind JsonDeserializer deserialize

List of usage examples for com.fasterxml.jackson.databind JsonDeserializer deserialize

Introduction

In this page you can find the example usage for com.fasterxml.jackson.databind JsonDeserializer deserialize.

Prototype

public abstract T deserialize(JsonParser paramJsonParser, DeserializationContext paramDeserializationContext);

Source Link

Usage

From source file:javaslang.jackson.datatype.deserialize.SerializableDeserializer.java

@Override
public T deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
    JsonDeserializer<Object> deserializer = ctxt.findRootValueDeserializer(ctxt.constructType(byte[].class));
    byte[] bytes = (byte[]) deserializer.deserialize(p, ctxt);
    return deserialize(bytes);
}

From source file:javaslang.jackson.datatype.deserialize.EitherDeserializer.java

@Override
public Either<?, ?> deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
    boolean right = false;
    Object value = null;//  ww  w.j  a  v  a2 s .  c o  m
    int cnt = 0;

    for (JsonToken jsonToken = p.nextToken(); jsonToken != END_ARRAY; jsonToken = p.nextToken()) {
        cnt++;
        switch (cnt) {
        case 1:
            String def = (String) stringDeserializer.deserialize(p, ctxt);
            if ("right".equals(def)) {
                right = true;
            } else if ("left".equals(def)) {
                right = false;
            } else {
                throw ctxt.mappingException(javaType.getRawClass());
            }
            break;
        case 2:
            JsonDeserializer<?> deserializer = right ? deserializer(1) : deserializer(0);
            value = (jsonToken != VALUE_NULL) ? deserializer.deserialize(p, ctxt)
                    : deserializer.getNullValue(ctxt);
            break;
        }
    }
    if (cnt != 2) {
        throw ctxt.mappingException(javaType.getRawClass());
    }
    return right ? Either.right(value) : Either.left(value);
}

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;/* w  w  w  .jav  a  2 s .  co m*/

    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: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  a  2s.co  m

    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:javaslang.jackson.datatype.deserialize.ArrayDeserializer.java

@Override
public T deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
    JsonDeserializer<?> deserializer = deserializer(0);
    List<Object> list = new ArrayList<>();
    if (!p.isExpectedStartArrayToken()) {
        throw ctxt.mappingException(valueType.getRawClass());
    }//from  w w w. jav a  2 s .  c o m
    for (JsonToken jsonToken = p.nextToken(); jsonToken != END_ARRAY; jsonToken = p.nextToken()) {
        Object value = (jsonToken != VALUE_NULL) ? deserializer.deserialize(p, ctxt)
                : deserializer.getNullValue(ctxt);
        list.add(value);
    }
    return create(list, ctxt);
}

From source file:org.emfjson.jackson.databind.deser.ResourceDeserializer.java

@Override
public Resource deserialize(JsonParser jp, DeserializationContext ctxt, Resource intoValue) throws IOException {
    final Resource resource = getResource(ctxt, intoValue);
    if (resource == null) {
        throw new IllegalArgumentException("Invalid resource");
    }//from w  ww  .  j  av  a  2s. c  o  m

    final ReferenceEntries entries = new ReferenceEntries();
    final EcoreTypeFactory ecoreType = new EcoreTypeFactory();
    final ResourceSet resourceSet = resource.getResourceSet();

    ctxt.setAttribute(RESOURCE, resource);
    ctxt.setAttribute(REFERENCE_ENTRIES, entries);
    ctxt.setAttribute(CACHE, new Cache());
    ctxt.setAttribute(TYPE_FACTORY, ecoreType);
    ctxt.setAttribute(RESOURCE_SET, resourceSet);

    if (!jp.hasCurrentToken()) {
        jp.nextToken();
    }

    final TypeFactory factory = TypeFactory.defaultInstance();
    final JsonDeserializer<Object> deserializer = ctxt
            .findRootValueDeserializer(factory.constructType(EObject.class));

    if (jp.getCurrentToken() == JsonToken.START_ARRAY) {

        while (jp.nextToken() != JsonToken.END_ARRAY) {

            EObject value = (EObject) deserializer.deserialize(jp, ctxt);
            if (value != null) {
                resource.getContents().add(value);
            }
        }

    } else if (jp.getCurrentToken() == JsonToken.START_OBJECT) {
        EObject value = (EObject) deserializer.deserialize(jp, ctxt);
        if (value != null) {
            resource.getContents().add(value);
        }
    }

    entries.resolve(resourceSet, uriHandler);

    return resource;
}

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  ww w.  j  a v  a  2 s.  c om
    } 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:com.addthis.codec.jackson.CodecTypeDeserializer.java

@Nullable
private Object _deserializeTypedFromArray(ArrayNode arrayNode, ObjectCodec objectCodec,
        DeserializationContext ctxt) throws IOException {
    if (idRes.isValidTypeId("_array")) {
        Config aliasDefaults = pluginMap.aliasDefaults("_array").toConfig();
        String arrayField = aliasDefaults.getString("_primary");
        try {//w ww  . j  a  va  2 s. c  o m
            ObjectNode objectFieldValues = (ObjectNode) objectCodec.createObjectNode();
            Jackson.setAt(objectFieldValues, arrayNode, arrayField);
            ObjectNode aliasFieldDefaults = Jackson.configConverter(aliasDefaults.root());
            Jackson.merge(objectFieldValues, aliasFieldDefaults);
            JsonDeserializer<Object> deser = _findDeserializer(ctxt, "_array");
            JsonParser treeParser = objectCodec.treeAsTokens(objectFieldValues);
            treeParser.nextToken();
            return deser.deserialize(treeParser, ctxt);
        } catch (IOException ex) {
            throw Jackson.maybeUnwrapPath(arrayField, ex);
        }
    } else {
        return null;
    }
}

From source file:com.arpnetworking.jackson.BuilderDeserializerTest.java

@Test
public void testWithoutNull() throws IOException {
    final TestFooBeanInterface expectedBean = TestFooBeanImpl.Builder.newInstance()
            .setFieldString(UUID.randomUUID().toString()).setFieldBoolean(Boolean.TRUE)
            .setFieldPrimitive(RANDOM_GENERATOR.nextInt()).setFieldBooleanPrimitive(false).build();

    final String jsonString = "{\"fieldString\":\"" + expectedBean.getFieldString() + "\""
            + ", \"fieldBoolean\":" + expectedBean.isFieldBoolean() + ", \"fieldPrimitive\":"
            + expectedBean.getFieldPrimitive() + ", \"fieldBooleanPrimitive\":"
            + expectedBean.isFieldBooleanPrimitive() + "}";

    final JsonFactory jsonFactory = new JsonFactory(new ObjectMapper());
    try (final JsonParser jsonParser = jsonFactory.createParser(jsonString)) {
        final JsonDeserializer<? extends TestFooBeanInterface> deserializer = BuilderDeserializer
                .of(TestFooBeanImpl.Builder.class);
        final TestFooBeanInterface actualBean = deserializer.deserialize(jsonParser, null);
        Assert.assertEquals(expectedBean, actualBean);
    }//from www  .ja  v a2s.  c o m
}

From source file:com.arpnetworking.jackson.BuilderDeserializerTest.java

@Test
public void testWithNull() throws IOException {
    final TestFooBeanInterface expectedBean = TestFooBeanImpl.Builder.newInstance()
            .setFieldString(UUID.randomUUID().toString()).setFieldBoolean(Boolean.TRUE)
            .setFieldPrimitive(RANDOM_GENERATOR.nextInt()).setFieldBooleanPrimitive(false).setFieldNull(null)
            .build();//from   ww  w  .  j a va2s  .  co  m

    final String jsonString = "{\"fieldString\":\"" + expectedBean.getFieldString() + "\""
            + ", \"fieldBoolean\":" + expectedBean.isFieldBoolean() + ", \"fieldPrimitive\":"
            + expectedBean.getFieldPrimitive() + ", \"fieldBooleanPrimitive\":"
            + expectedBean.isFieldBooleanPrimitive() + ", \"fieldNull\":" + expectedBean.getFieldNull() + "}";

    final JsonFactory jsonFactory = new JsonFactory(new ObjectMapper());
    try (final JsonParser jsonParser = jsonFactory.createParser(jsonString)) {
        final JsonDeserializer<? extends TestFooBeanInterface> deserializer = BuilderDeserializer
                .of(TestFooBeanImpl.Builder.class);
        final TestFooBeanInterface actualBean = deserializer.deserialize(jsonParser, null);
        Assert.assertEquals(expectedBean, actualBean);
    }
}