Top Description Fields Constructors Methods
com.fasterxml.jackson.databind.deser

public abstract Class DeserializerFactory

extends Object
Class Inheritance
Known Direct Subclasses
com.fasterxml.jackson.databind.deser.BasicDeserializerFactory
Imports
com.fasterxml.jackson.databind.*, com.fasterxml.jackson.databind.jsontype.TypeDeserializer, com.fasterxml.jackson.databind.type.*

Abstract class that defines API used by DeserializationContext to construct actual JsonDeserializer instances (which are then cached by context and/or dedicated cache).

Since there are multiple broad categories of deserializers, there are multiple factory methods:

Field Summary

Modifier and TypeField and Description
protected static final Deserializers[]

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public abstract JsonDeserializer<?>
createArrayDeserializer(DeserializationContext ctxt, ArrayType
Type to be deserialized
type
,
BeanDescription beanDesc)

Method called to create (or, for completely immutable deserializers, reuse) a deserializer that can convert JSON content into values of specified Java type.

public abstract JsonDeserializer<Object>
createBeanDeserializer(DeserializationContext ctxt, JavaType
Type to be deserialized
type
,
BeanDescription beanDesc)

Method called to create (or, for completely immutable deserializers, reuse) a deserializer that can convert JSON content into values of specified Java "bean" (POJO) type.

public abstract JsonDeserializer<Object>
createBuilderBasedDeserializer(DeserializationContext ctxt, JavaType type, BeanDescription beanDesc, Class<?> builderClass)

Method called to create a deserializer that will use specified Builder class for building value instances.

public abstract JsonDeserializer<?>
public abstract JsonDeserializer<?>
public abstract JsonDeserializer<?>
public abstract KeyDeserializer

Returns:

Key deserializer to use for specified type, if one found; null if not (and default key deserializer should be used)
createKeyDeserializer
(DeserializationContext ctxt, JavaType type)

Method called to find if factory knows how to create a key deserializer for specified type; currently this means checking if a module has registered possible deserializers.

public abstract JsonDeserializer<?>
public abstract JsonDeserializer<?>
public abstract JsonDeserializer<?>
public abstract JsonDeserializer<?>
createTreeDeserializer(DeserializationConfig config, JavaType type, BeanDescription beanDesc)

Method called to create and return a deserializer that can construct JsonNode(s) from JSON content.

public abstract TypeDeserializer

Returns:

Type deserializer to use for given base type, if one is needed; null if not.
findTypeDeserializer
(DeserializationConfig config, JavaType
Declared base type of the value to deserializer (actual deserializer type will be this type or its subtype)
baseType
)

Method called to find and create a type information deserializer for given base type, if one is needed.

public abstract ValueInstantiator
findValueInstantiator(DeserializationContext ctxt, BeanDescription beanDesc)

Method that is to find all creators (constructors, factory methods) for the bean type to deserialize.

public abstract boolean
hasExplicitDeserializerFor(DeserializationConfig config, Class<?> valueType)

Method that can be used to check if databind module has explicitly declared deserializer for given (likely JDK) type, explicit meaning that there is specific deserializer for given type as opposed to auto-generated "Bean" deserializer.

public abstract JavaType
mapAbstractType(DeserializationConfig config, JavaType type)

Method that can be called to try to resolve an abstract type (interface, abstract class) into a concrete type, or at least something "more concrete" (abstract class instead of interface).

public abstract DeserializerFactory
withAbstractTypeResolver(AbstractTypeResolver resolver)

Convenience method for creating a new factory instance with additional AbstractTypeResolver.

public abstract DeserializerFactory
withAdditionalDeserializers(Deserializers additional)

Convenience method for creating a new factory instance with additional deserializer provider.

public abstract DeserializerFactory
withAdditionalKeyDeserializers(KeyDeserializers additional)

Convenience method for creating a new factory instance with additional KeyDeserializers.

public abstract DeserializerFactory
withDeserializerModifier(BeanDeserializerModifier modifier)

Convenience method for creating a new factory instance with additional BeanDeserializerModifier.

public abstract DeserializerFactory
withValueInstantiators(ValueInstantiators instantiators)

Convenience method for creating a new factory instance with additional ValueInstantiators.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

NO_DESERIALIZERSback to summary
protected static final Deserializers[] NO_DESERIALIZERS

Constructor Detail

DeserializerFactoryback to summary
public DeserializerFactory()

Method Detail

createArrayDeserializerback to summary
public abstract JsonDeserializer<?> createArrayDeserializer(DeserializationContext ctxt, ArrayType type, BeanDescription beanDesc) throws JsonMappingException

Method called to create (or, for completely immutable deserializers, reuse) a deserializer that can convert JSON content into values of specified Java type.

Parameters
type:ArrayType

Type to be deserialized

createBeanDeserializerback to summary
public abstract JsonDeserializer<Object> createBeanDeserializer(DeserializationContext ctxt, JavaType type, BeanDescription beanDesc) throws JsonMappingException

Method called to create (or, for completely immutable deserializers, reuse) a deserializer that can convert JSON content into values of specified Java "bean" (POJO) type. At this point it is known that the type is not otherwise recognized as one of structured types (array, Collection, Map) or a well-known JDK type (enum, primitives/wrappers, String); this method only gets called if other options are exhausted. This also means that this method can be overridden to add support for custom types.

Parameters
type:JavaType

Type to be deserialized

createBuilderBasedDeserializerback to summary
public abstract JsonDeserializer<Object> createBuilderBasedDeserializer(DeserializationContext ctxt, JavaType type, BeanDescription beanDesc, Class<?> builderClass) throws JsonMappingException

Method called to create a deserializer that will use specified Builder class for building value instances.

createCollectionDeserializerback to summary
public abstract JsonDeserializer<?> createCollectionDeserializer(DeserializationContext ctxt, CollectionType type, BeanDescription beanDesc) throws JsonMappingException
createCollectionLikeDeserializerback to summary
public abstract JsonDeserializer<?> createCollectionLikeDeserializer(DeserializationContext ctxt, CollectionLikeType type, BeanDescription beanDesc) throws JsonMappingException
createEnumDeserializerback to summary
public abstract JsonDeserializer<?> createEnumDeserializer(DeserializationContext ctxt, JavaType type, BeanDescription beanDesc) throws JsonMappingException
createKeyDeserializerback to summary
public abstract KeyDeserializer createKeyDeserializer(DeserializationContext ctxt, JavaType type) throws JsonMappingException

Method called to find if factory knows how to create a key deserializer for specified type; currently this means checking if a module has registered possible deserializers.

Returns:KeyDeserializer

Key deserializer to use for specified type, if one found; null if not (and default key deserializer should be used)

createMapDeserializerback to summary
public abstract JsonDeserializer<?> createMapDeserializer(DeserializationContext ctxt, MapType type, BeanDescription beanDesc) throws JsonMappingException
createMapLikeDeserializerback to summary
public abstract JsonDeserializer<?> createMapLikeDeserializer(DeserializationContext ctxt, MapLikeType type, BeanDescription beanDesc) throws JsonMappingException
createReferenceDeserializerback to summary
public abstract JsonDeserializer<?> createReferenceDeserializer(DeserializationContext ctxt, ReferenceType type, BeanDescription beanDesc) throws JsonMappingException
Since
2.7
createTreeDeserializerback to summary
public abstract JsonDeserializer<?> createTreeDeserializer(DeserializationConfig config, JavaType type, BeanDescription beanDesc) throws JsonMappingException

Method called to create and return a deserializer that can construct JsonNode(s) from JSON content.

findTypeDeserializerback to summary
public abstract TypeDeserializer findTypeDeserializer(DeserializationConfig config, JavaType baseType) throws JsonMappingException

Method called to find and create a type information deserializer for given base type, if one is needed. If not needed (no polymorphic handling configured for type), should return null.

Note that this method is usually only directly called for values of container (Collection, array, Map) types and root values, but not for bean property values.

Parameters
baseType:JavaType

Declared base type of the value to deserializer (actual deserializer type will be this type or its subtype)

Returns:TypeDeserializer

Type deserializer to use for given base type, if one is needed; null if not.

findValueInstantiatorback to summary
public abstract ValueInstantiator findValueInstantiator(DeserializationContext ctxt, BeanDescription beanDesc) throws JsonMappingException

Method that is to find all creators (constructors, factory methods) for the bean type to deserialize.

hasExplicitDeserializerForback to summary
public abstract boolean hasExplicitDeserializerFor(DeserializationConfig config, Class<?> valueType)

Method that can be used to check if databind module has explicitly declared deserializer for given (likely JDK) type, explicit meaning that there is specific deserializer for given type as opposed to auto-generated "Bean" deserializer. Factory itself will check for known JDK-provided types, but registered com.fasterxml.jackson.databind.Modules are also called to see if they might provide explicit deserializer.

Main use for this method is with Safe Default Typing (and generally Safe Polymorphic Deserialization), during which it is good to be able to check that given raw type is explicitly supported and as such "known type" (as opposed to potentially dangerous "gadget type" which could be exploited).

This matches Deserializers.Base.hasDeserializerFor(Class) method, which is the mechanism used to determine if a Module might provide an explicit deserializer instead of core databind.

Since
2.11
mapAbstractTypeback to summary
public abstract JavaType mapAbstractType(DeserializationConfig config, JavaType type) throws JsonMappingException

Method that can be called to try to resolve an abstract type (interface, abstract class) into a concrete type, or at least something "more concrete" (abstract class instead of interface). Will either return passed type, or a more specific type.

withAbstractTypeResolverback to summary
public abstract DeserializerFactory withAbstractTypeResolver(AbstractTypeResolver resolver)

Convenience method for creating a new factory instance with additional AbstractTypeResolver.

withAdditionalDeserializersback to summary
public abstract DeserializerFactory withAdditionalDeserializers(Deserializers additional)

Convenience method for creating a new factory instance with additional deserializer provider.

withAdditionalKeyDeserializersback to summary
public abstract DeserializerFactory withAdditionalKeyDeserializers(KeyDeserializers additional)

Convenience method for creating a new factory instance with additional KeyDeserializers.

withDeserializerModifierback to summary
public abstract DeserializerFactory withDeserializerModifier(BeanDeserializerModifier modifier)

Convenience method for creating a new factory instance with additional BeanDeserializerModifier.

withValueInstantiatorsback to summary
public abstract DeserializerFactory withValueInstantiators(ValueInstantiators instantiators)

Convenience method for creating a new factory instance with additional ValueInstantiators.