Interface Deserializers

All Known Implementing Classes:
Deserializers.Base, Deserializers.None, SimpleDeserializers

public interface Deserializers
Interface that defines API for simple extensions that can provide additional deserializers for various types. Access is by a single callback method; instance is to either return a configured JsonDeserializer for specified type, or null to indicate that it does not support handling of the type. In latter case, further calls can be made for other providers; in former case returned deserializer is used for handling of instances of specified type.

Unlike with Serializers, multiple different methods are used since different kinds of types typically require different kinds of inputs.

Since:
1.7
  • Method Details

    • findArrayDeserializer

      JsonDeserializer<?> findArrayDeserializer(ArrayType type, DeserializationConfig config, DeserializerProvider provider, BeanProperty property, TypeDeserializer elementTypeDeserializer, JsonDeserializer<?> elementDeserializer) throws JsonMappingException
      Method called to locate serializer for specified array type.

      Deserializer for element type may be passed, if configured explicitly at higher level (by annotations, typically), but usually are not. Type deserializer for element is passed if one is needed based on contextual information (annotations on declared element class; or on field or method type is associated with).

      Parameters:
      type - Type of array instances to deserialize
      config - Configuration in effect
      provider - Provider that can be used to locate deserializer for component type (if one not provided, or needs to be overridden)
      property - Property that contains array value (null for root values)
      elementTypeDeserializer - If element type needs polymorphic type handling, this is the type information deserializer to use; should usually be used as is when constructing array deserializer.
      elementDeserializer - Deserializer to use for elements, if explicitly defined (by using annotations, for exmple). May be null, in which case it should be resolved here (or using ResolvableDeserializer callback)
      Returns:
      Deserializer to use for the type; or null if this provider does not know how to construct it
      Throws:
      JsonMappingException
    • findCollectionDeserializer

      JsonDeserializer<?> findCollectionDeserializer(CollectionType type, DeserializationConfig config, DeserializerProvider provider, BeanDescription beanDesc, BeanProperty property, TypeDeserializer elementTypeDeserializer, JsonDeserializer<?> elementDeserializer) throws JsonMappingException
      Method called to locate serializer for specified Collection (List, Set etc) type.

      Deserializer for element type may be passed, if configured explicitly at higher level (by annotations, typically), but usually are not. Type deserializer for element is passed if one is needed based on contextual information (annotations on declared element class; or on field or method type is associated with).

      Parameters:
      type - Type of collection instances to deserialize
      config - Configuration in effect
      provider - Provider that can be used to locate dependant deserializers if and as necessary (but note that in many cases resolution must be deferred by using ResolvableDeserializer callback)
      property - Property that contains array value (null for root values)
      beanDesc - Definition of the enumeration type that contains class annotations and other information typically needed for building deserializers (note: always instance of BasicBeanDescription)
      elementTypeDeserializer - If element type needs polymorphic type handling, this is the type information deserializer to use; should usually be used as is when constructing array deserializer.
      elementDeserializer - Deserializer to use for elements, if explicitly defined (by using annotations, for exmple). May be null, in which case it should be resolved here (or using ResolvableDeserializer callback)
      Returns:
      Deserializer to use for the type; or null if this provider does not know how to construct it
      Throws:
      JsonMappingException
    • findCollectionLikeDeserializer

      JsonDeserializer<?> findCollectionLikeDeserializer(CollectionLikeType type, DeserializationConfig config, DeserializerProvider provider, BeanDescription beanDesc, BeanProperty property, TypeDeserializer elementTypeDeserializer, JsonDeserializer<?> elementDeserializer) throws JsonMappingException
      Method called to locate serializer for specified "Collection-like" type (one that acts like Collection but does not implement it).

      Deserializer for element type may be passed, if configured explicitly at higher level (by annotations, typically), but usually are not. Type deserializer for element is passed if one is needed based on contextual information (annotations on declared element class; or on field or method type is associated with).

      Parameters:
      type - Type of instances to deserialize
      config - Configuration in effect
      provider - Provider that can be used to locate dependant deserializers if and as necessary (but note that in many cases resolution must be deferred by using ResolvableDeserializer callback)
      property - Property that contains array value (null for root values)
      beanDesc - Definition of the enumeration type that contains class annotations and other information typically needed for building deserializers (note: always instance of BasicBeanDescription)
      elementTypeDeserializer - If element type needs polymorphic type handling, this is the type information deserializer to use; should usually be used as is when constructing array deserializer.
      elementDeserializer - Deserializer to use for elements, if explicitly defined (by using annotations, for exmple). May be null, in which case it should be resolved here (or using ResolvableDeserializer callback)
      Returns:
      Deserializer to use for the type; or null if this provider does not know how to construct it
      Throws:
      JsonMappingException
      Since:
      1.8
    • findEnumDeserializer

      JsonDeserializer<?> findEnumDeserializer(Class<?> type, DeserializationConfig config, BeanDescription beanDesc, BeanProperty property) throws JsonMappingException
      Method called to locate deserializer for specified Enum type.
      Parameters:
      type - Type of Enum instances to deserialize
      config - Configuration in effect
      beanDesc - Definition of the enumeration type that contains class annotations and other information typically needed for building deserializers (note: always instance of BasicBeanDescription)
      Returns:
      Deserializer to use for the type; or null if this provider does not know how to construct it
      Throws:
      JsonMappingException
    • findMapDeserializer

      JsonDeserializer<?> findMapDeserializer(MapType type, DeserializationConfig config, DeserializerProvider provider, BeanDescription beanDesc, BeanProperty property, KeyDeserializer keyDeserializer, TypeDeserializer elementTypeDeserializer, JsonDeserializer<?> elementDeserializer) throws JsonMappingException
      Method called to locate deserializer for specified Map type.

      Deserializer for element type may be passed, if configured explicitly at higher level (by annotations, typically), but usually are not. Type deserializer for element is passed if one is needed based on contextual information (annotations on declared element class; or on field or method type is associated with).

      Similarly, a KeyDeserializer may be passed, but this is only done if there is a specific configuration override (annotations) to indicate instance to use. Otherwise null is passed, and key deserializer needs to be obtained using DeserializerProvider

      Parameters:
      type - Type of Map instances to deserialize
      config - Configuration in effect
      provider - Provider that can be used to locate dependant deserializers if and as necessary (but note that in many cases resolution must be deferred by using ResolvableDeserializer callback)
      beanDesc - Definition of the enumeration type that contains class annotations and other information typically needed for building deserializers (note: always instance of BasicBeanDescription)
      keyDeserializer - Key deserializer use, if it is defined via annotations or other configuration; null if default key deserializer for key type can be used.
      elementTypeDeserializer - If element type needs polymorphic type handling, this is the type information deserializer to use; should usually be used as is when constructing array deserializer.
      elementDeserializer - Deserializer to use for elements, if explicitly defined (by using annotations, for exmple). May be null, in which case it should be resolved here (or using ResolvableDeserializer callback)
      Returns:
      Deserializer to use for the type; or null if this provider does not know how to construct it
      Throws:
      JsonMappingException
    • findMapLikeDeserializer

      JsonDeserializer<?> findMapLikeDeserializer(MapLikeType type, DeserializationConfig config, DeserializerProvider provider, BeanDescription beanDesc, BeanProperty property, KeyDeserializer keyDeserializer, TypeDeserializer elementTypeDeserializer, JsonDeserializer<?> elementDeserializer) throws JsonMappingException
      Method called to locate serializer for specified "Map-like" type (one that acts like Map but does not implement it).

      Deserializer for element type may be passed, if configured explicitly at higher level (by annotations, typically), but usually are not. Type deserializer for element is passed if one is needed based on contextual information (annotations on declared element class; or on field or method type is associated with).

      Similarly, a KeyDeserializer may be passed, but this is only done if there is a specific configuration override (annotations) to indicate instance to use. Otherwise null is passed, and key deserializer needs to be obtained using DeserializerProvider

      Parameters:
      type - Type of Map instances to deserialize
      config - Configuration in effect
      provider - Provider that can be used to locate dependant deserializers if and as necessary (but note that in many cases resolution must be deferred by using ResolvableDeserializer callback)
      beanDesc - Definition of the enumeration type that contains class annotations and other information typically needed for building deserializers (note: always instance of BasicBeanDescription)
      keyDeserializer - Key deserializer use, if it is defined via annotations or other configuration; null if default key deserializer for key type can be used.
      elementTypeDeserializer - If element type needs polymorphic type handling, this is the type information deserializer to use; should usually be used as is when constructing array deserializer.
      elementDeserializer - Deserializer to use for elements, if explicitly defined (by using annotations, for exmple). May be null, in which case it should be resolved here (or using ResolvableDeserializer callback)
      Returns:
      Deserializer to use for the type; or null if this provider does not know how to construct it
      Throws:
      JsonMappingException
      Since:
      1.8
    • findTreeNodeDeserializer

      JsonDeserializer<?> findTreeNodeDeserializer(Class<? extends JsonNode> nodeType, DeserializationConfig config, BeanProperty property) throws JsonMappingException
      Method called to locate deserializer for specified JSON tree node type.
      Parameters:
      nodeType - Specific type of JSON tree nodes to deserialize (subtype of JsonNode)
      config - Configuration in effect
      Returns:
      Deserializer to use for the type; or null if this provider does not know how to construct it
      Throws:
      JsonMappingException
    • findBeanDeserializer

      JsonDeserializer<?> findBeanDeserializer(JavaType type, DeserializationConfig config, DeserializerProvider provider, BeanDescription beanDesc, BeanProperty property) throws JsonMappingException
      Method called to locate deserializer for specified value type which does not belong to any other category (not an Enum, Collection, Map, Array or tree node)
      Parameters:
      type - Bean type to deserialize
      config - Configuration in effect
      provider - Provider that can be used to locate dependant deserializers if and as necessary (but note that in many cases resolution must be deferred by using ResolvableDeserializer callback)
      beanDesc - Definition of the enumeration type that contains class annotations and other information typically needed for building deserializers (note: always instance of BasicBeanDescription)
      Returns:
      Deserializer to use for the type; or null if this provider does not know how to construct it
      Throws:
      JsonMappingException