Package com.fasterxml.jackson.annotation
Annotation Type JsonDeserializeAs
@Target({ANNOTATION_TYPE,METHOD,FIELD,TYPE,PARAMETER})
@Retention(RUNTIME)
public @interface JsonDeserializeAs
Annotation to indicate override of deserialization target type;
a more specialized type (sub-type) than declared one.
Can be used on types (
Classes) or on properties (property accessors
like "getters", "setters" and constructor parameters).
Overrides can apply to:
valueitself (for all types and properties)contentof structured types (array andCollectionelements;Mapvalues)keys ofMaps
To indicate that no override is to be used, Void.class is used
as the marker (will use declared type) -- this is necessary as Annotation
properties cannot have null values.
Example usage:
public class POJO {
@JsonDeserializeAs(ValueImpl.class)
public Value value;
@JsonDeserializeAs(keys = KeyEnum.class, content = ValueImpl.class)
public Map<Object, Object> props;
}
-
Optional Element Summary
Optional Elements
-
Element Details
-
value
Class<?> valueType to deserialize values as, instead of type declared. Must be a sub-type of declared type; otherwise an exception may be thrown by deserializer.Bogus type
Voidis used to indicate that declared type is used as-is (i.e. this annotation property has no setting).- Default:
java.lang.Void.class
-
content
Class<?> contentType to deserialize content entries (array andCollectionelements,Mapvalues) as, instead of type declared. Must be a sub-type of declared type; otherwise an exception may be thrown by deserializer.Bogus type
Voidis used to indicate that declared type is used as-is (i.e. this annotation property has no setting).- Default:
java.lang.Void.class
-
keys
Class<?> keysType to deserializeMapkeys as, instead of type declared. Must be a sub-type of declared type; otherwise an exception may be thrown by deserializer.Bogus type
Voidis used to indicate that declared type is used as-is (i.e. this annotation property has no setting).- Default:
java.lang.Void.class
-