|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: REQUIRED | OPTIONAL | DETAIL: ELEMENT |
@Target(value={TYPE,FIELD,METHOD,PARAMETER}) @Retention(value=RUNTIME) public @interface JsonTypeInfo
Annotation used for configuring details of if and how type information is used with JSON serialization and deserialization, to preserve information about actual class of Object instances. This is necessarily for polymorphic types, and may also be needed to link abstract declared types and matching concrete implementation.
Some examples of typical annotations:
// Include Java class name ("com.myempl.ImplClass") as JSON property "class" \@JsonTypeInfo(use=Id.CLASS, include=As.PROPERTY, property="class") // Include logical type name (defined in impl classes) as wrapper; 2 annotations \@JsonTypeInfo(use=Id.NAME, include=As.WRAPPER_OBJECT) \@JsonSubTypes({com.myemp.Impl1.class, com.myempl.Impl2.class})Alternatively you can also define fully customized type handling by using
JsonTypeResolver
annotation.
NOTE: originally this annotation was only available to use with types (classes), but starting with 1.7, it is also allowed for properties (fields, methods, constructor parameters).
When used for properties (fields, methods), there annotation always defines
to values: specifically, when applied to a Collection
or
Map
property, it will not apply to container type but
to contained values. This is identical to how JAXB handles type information
annotations; and is chosen since it is the dominant use case. There is no
per-property way to force type information to be included for type of
container itself.
JsonTypeResolver
Required Element Summary | |
---|---|
JsonTypeInfo.Id |
use
What kind of type metadata is to be used for serializing and deserializing type information for instances of annotated type (and its subtypes unless overridden) |
Optional Element Summary | |
---|---|
JsonTypeInfo.As |
include
What mechanism is used for including type metadata (if any; for JsonTypeInfo.Id.NONE nothing is included). |
String |
property
Property names used when type inclusion method ( JsonTypeInfo.As.PROPERTY ) is used
(or possibly when using type metadata of type JsonTypeInfo.Id.CUSTOM ). |
Element Detail |
---|
public abstract JsonTypeInfo.Id use
public abstract JsonTypeInfo.As include
JsonTypeInfo.Id.NONE
nothing is included). Default
Note that for type metadata type of JsonTypeInfo.Id.CUSTOM
,
this setting may or may not have any effect.
public abstract String property
JsonTypeInfo.As.PROPERTY
) is used
(or possibly when using type metadata of type JsonTypeInfo.Id.CUSTOM
).
Default property name used if this property is not explicitly defined
(or is set to empty String) is based on
type metadata type (use()
) used.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: REQUIRED | OPTIONAL | DETAIL: ELEMENT |