- 
          
 - 
                Notifications
    
You must be signed in to change notification settings  - Fork 1.4k
 
Databind annotations
        Tatu Saloranta edited this page Nov 19, 2013 
        ·
        6 revisions
      
    In addition to core Jackson annotations, jackson-databind adds a small set of annotations that are tied to types defined in databind package.
These are used for more fine-grained definition of handlers.
- 
@JsonSerialize (method, field) can be used to denote:
- Explicit serializer (of type 
JsonSerializer) to use, with following properties:- 
usingfor value of property itself - 
keyUsingfor keys ofjava.util.Mapvalued properties - 
contentUsingfor contents of structured values (elements of arrays,java.util.Collections, values ofjava.util.Maps) - 
nullUsingwhen serializing Javanullvalued properties (NEW with 2.3) 
 - 
 - Explicit type to use (instead of actual run time type) with
- 
asfor property value - 
keyAsforjava.util.Mapkeys - 
contentAsfor elements/values of structured types - NOTE: type used must be compatible with nominal type (a super type)
 
 - 
 - Whether static or dynamic typing (default: static typing) is to be used: 
typingproperty- Allowed values are 
DYNAMIC(for dynamic runtime type),STATIC(to use declared, "nominal" type) orDEFAULT_TYPINGto use defaults forObjectMapper 
 - Allowed values are 
 - Converter object (of type 
Converter) to use- 
converterfor property value itself, or - 
contentConverterfor values of structured types (elements of array,java.util.Collections; values ofjava.util.Maps) 
 - 
 
 - Explicit serializer (of type 
 
- 
@JsonDeserialize (method, field) can be used to denote:
- Explicit deserializer to use:
- 
usingfor values (scalars or structured) - 
contentUsingfor values of structured types (elements ofarraysandjava.util.Collections, values ofjava.util.Maps) - 
keyUsingfor keys ofjava.util.Maps 
 - 
 - Explicit types to use with
- 
asproperty (must be compatible with declared type, i.e. subtype) - Similarly 
keyAs()andcontentAs()for specifying key type forjava.util.Maps, content type for Collections, arrays. 
 - 
 - Builder object (of any type) to use: 
builder - Converter object (of type 
Converter) to use- 
converterfor property value itself, or - 
contentConverterfor values of structured types (elements of array,java.util.Collections; values ofjava.util.Maps) 
 - 
 
 - Explicit deserializer to use:
 - 
@JsonNaming (Class) is used to indicate 
PropertyNamingStrategyto use for annotated type- Note that 
databindmodule includes implementation of two alternate naming strategies:- 
PropertyNamingStrategy.LowerCaseWithUnderScoresStrategy: supports "C-style" naming, likefirst_name(instead of Java "firstName") - 
PropertyNamingStrategy.PascalCaseStrategy: supports names like "FirstName" 
 - 
 
 - Note that 
 - 
@JsonPOJOBuilder (Class) is used to configure so-called 
Builderobjects; builders can be specified using@JsonDeserialize.builderproperty - 
@JsonValueInstantiator (Class) is used to specify custom 
ValueInstantiatorto use for annotated type- Use of 
ValueInstantiatoris an advanced topic. 
 - Use of 
 
Following annotations work together with standard @JsonTypeInfo annotation defined by core annotations package.
- @JsonTypeResolver (class) can be used to plug in a custom type information handler, to replace default one (for specific class)
 - @JsonTypeIdResolver (class) can be used to replace standard type id converter (type to/from JSON String) with a custom version; for example, to create more convenient handler for using logical type names.
 
It is also possible to use JAXB annotations in addition to or instead of these core annotations.