org.codehaus.jackson.map.annotate
Annotation Type JsonDeserialize


@Target(value={METHOD,FIELD,TYPE,PARAMETER})
@Retention(value=RUNTIME)
public @interface JsonDeserialize

Annotation use for configuring deserialization aspects, by attaching to "setter" methods or fields, or to value classes. When annotating value classes, configuration is used for instances of the value class but can be overridden by more specific annotations (ones that attach to methods or fields).

An example annotation would be:

  @JsonDeserialize(using=MySerializer.class,
    as=MyHashMap.class,
    keyAs=MyHashKey.class,
    contentAs=MyHashValue.class
  )

NOTE: since version 1.2, annotation has also been applicable to (constructor) parameters

Since:
1.1

Optional Element Summary
 Class<?> as
          Concrete type to deserialize values as, instead of type otherwise declared.
 Class<?> contentAs
          Deserializer class to use for deserializing associated value when it will used as contents of Collection, Map and array types.
 Class<? extends JsonDeserializer<?>> contentUsing
          Deserializer class to use for deserializing contents (elements of a Collection/array, values of Maps) of annotated property.
 Class<?> keyAs
          Concrete type to deserialize keys of Map as, instead of type otherwise declared.
 Class<? extends KeyDeserializer> keyUsing
          Deserializer class to use for deserializing Map keys of annotated property.
 Class<? extends JsonDeserializer<?>> using
          Deserializer class to use for deserializing associated value.
 

using

public abstract Class<? extends JsonDeserializer<?>> using
Deserializer class to use for deserializing associated value. Depending on what is annotated, value is either an instance of annotated class (used globablly anywhere where class deserializer is needed); or only used for deserializing property access via a setter method.

Default:
org.codehaus.jackson.map.JsonDeserializer.None.class

contentUsing

public abstract Class<? extends JsonDeserializer<?>> contentUsing
Deserializer class to use for deserializing contents (elements of a Collection/array, values of Maps) of annotated property. Can only be used on instances (methods, fields, constructors), and not value classes themselves.

Since:
1.3
Default:
org.codehaus.jackson.map.JsonDeserializer.None.class

keyUsing

public abstract Class<? extends KeyDeserializer> keyUsing
Deserializer class to use for deserializing Map keys of annotated property. Can only be used on instances (methods, fields, constructors), and not value classes themselves.

Since:
1.3
Default:
org.codehaus.jackson.map.KeyDeserializer.None.class

as

public abstract Class<?> as
Concrete type to deserialize values as, instead of type otherwise declared. Must be a subtype of declared type; otherwise an exception may be thrown by deserializer.

Bogus type NoClass can be used to indicate that declared type is used as is (i.e. this annotation property has no setting); this since annotation properties are not allowed to have null value.

Note: if using() is also used it has precedence (since it directly specified deserializer, whereas this would only be used to locate the deserializer) and value of this annotation property is ignored.

Default:
org.codehaus.jackson.map.annotate.NoClass.class

keyAs

public abstract Class<?> keyAs
Concrete type to deserialize keys of Map as, instead of type otherwise declared. Must be a subtype of declared type; otherwise an exception may be thrown by deserializer.

When annotating a class, will define default deserializer to use when class instances are used as Map keys; when methods, keys of the associated Map property. Method annotation has precedence over class annotations, if both exist.

Default:
org.codehaus.jackson.map.annotate.NoClass.class

contentAs

public abstract Class<?> contentAs
Deserializer class to use for deserializing associated value when it will used as contents of Collection, Map and array types.

When annotating a class, will define default deserializer to use when class instances are used as contents of collection/map/array types; when methods, keys of the associated collection/map/array property. Method annotation has precedence over class annotations, if both exist.

Default:
org.codehaus.jackson.map.annotate.NoClass.class