Annotation Type JsonSerialize
-
@Target({ANNOTATION_TYPE,METHOD,FIELD,TYPE,PARAMETER}) @Retention(RUNTIME) public @interface JsonSerialize
Annotation used for configuring serialization aspects, by attaching to "getter" 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:
@JsonSerialize(using=MySerializer.class, as=MySubClass.class, typing=JsonSerialize.Typing.STATIC )
(which would be redundant, since some properties block others: specifically, 'using' has precedence over 'as', which has precedence over 'typing' setting)
-
-
Optional Element Summary
Optional Elements Modifier and Type Optional Element Description java.lang.Class<?>
as
Supertype (of declared type, which itself is supertype of runtime type) to use as type when locating serializer to use.java.lang.Class<?>
contentAs
Concrete type to serialize content value (elements of a Collection/array, values of Maps) as, instead of type otherwise declared.java.lang.Class<? extends Converter>
contentConverter
Similar toconverter()
, but used for values of structures types (List, arrays, Maps).java.lang.Class<? extends JsonSerializer>
contentUsing
Serializer class to use for serializing contents (elements of a Collection/array, values of Maps) of annotated property.java.lang.Class<? extends Converter>
converter
Which helper object is to be used to convert type into something that Jackson knows how to serialize; either because base type cannot be serialized easily, or just to alter serialization.JsonSerialize.Inclusion
include
Deprecated.As of Jackson 2.0, this annotation has been replaced byJsonInclude
java.lang.Class<?>
keyAs
Concrete type to serialize keys ofMap
as, instead of type otherwise declared.java.lang.Class<? extends JsonSerializer>
keyUsing
Serializer class to use for deserializing Map keys of annotated property or Map keys of value type so annotated.java.lang.Class<? extends JsonSerializer>
nullsUsing
Serializer class to use for serializing nulls for properties that are annotated, instead of the default null serializer.JsonSerialize.Typing
typing
Whether type detection used is dynamic or static: that is, whether actual runtime type is used (dynamic), or just the declared type (static).java.lang.Class<? extends JsonSerializer>
using
Serializer class to use for serializing associated value.
-
-
-
Element Detail
-
using
java.lang.Class<? extends JsonSerializer> using
Serializer class to use for serializing associated value. Depending on what is annotated, value is either an instance of annotated class (used globablly anywhere where class serializer is needed); or only used for serializing the value of the property annotated.- Default:
- com.fasterxml.jackson.databind.JsonSerializer.None.class
-
-
-
contentUsing
java.lang.Class<? extends JsonSerializer> contentUsing
Serializer class to use for serializing contents (elements of a Collection/array, values of Maps) of annotated property. Can only be used on accessors (methods, fields, constructors), to apply to values ofMap
-valued properties; not applicable for value types used as Array elements orCollection
andMap
values.- Default:
- com.fasterxml.jackson.databind.JsonSerializer.None.class
-
-
-
keyUsing
java.lang.Class<? extends JsonSerializer> keyUsing
Serializer class to use for deserializing Map keys of annotated property or Map keys of value type so annotated. Can be used both on accessors (methods, fields, constructors), to apply to values ofMap
-valued properties, and on "key" classes, to apply to use of annotated type asMap
keys (latter starting with Jackson 2.11).- Default:
- com.fasterxml.jackson.databind.JsonSerializer.None.class
-
-
-
nullsUsing
java.lang.Class<? extends JsonSerializer> nullsUsing
Serializer class to use for serializing nulls for properties that are annotated, instead of the default null serializer. Note that using this property when annotation types (classes) has no effect currently (it is possible this could be improved in future).- Since:
- 2.3
- Default:
- com.fasterxml.jackson.databind.JsonSerializer.None.class
-
-
-
as
java.lang.Class<?> as
Supertype (of declared type, which itself is supertype of runtime type) to use as type when locating serializer to use.Bogus type
Void
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 specifies serializer, whereas this would only be used to locate the serializer) and value of this annotation property is ignored.- Default:
- java.lang.Void.class
-
-
-
typing
JsonSerialize.Typing typing
Whether type detection used is dynamic or static: that is, whether actual runtime type is used (dynamic), or just the declared type (static).Note that Jackson 2.3 changed default to
DEFAULT_TYPING
, which is roughly same as saying "whatever". This is important as it allows avoiding accidental overrides at property level.- Default:
- com.fasterxml.jackson.databind.annotation.JsonSerialize.Typing.DEFAULT_TYPING
-
-
-
converter
java.lang.Class<? extends Converter> converter
Which helper object is to be used to convert type into something that Jackson knows how to serialize; either because base type cannot be serialized easily, or just to alter serialization.- Since:
- 2.2
- Default:
- com.fasterxml.jackson.databind.util.Converter.None.class
-
-
-
contentConverter
java.lang.Class<? extends Converter> contentConverter
Similar toconverter()
, but used for values of structures types (List, arrays, Maps). Note that this property does NOT have effect when used as Class annotation; it can only be used as property annotation: this because association between container and value types is loose and as such converters seldom make sense for such usage.- Since:
- 2.2
- Default:
- com.fasterxml.jackson.databind.util.Converter.None.class
-
-
-
include
@Deprecated JsonSerialize.Inclusion include
Deprecated.As of Jackson 2.0, this annotation has been replaced byJsonInclude
Which properties of annotated Bean are to be included in serialization (has no effect on other types like enums, primitives or collections). Choices are "all", "properties that have value other than null" and "properties that have non-default value" (i.e. default value being property setting for a Bean constructed with default no-arg constructor, often null).This property has been replaced by special-purpose
JsonInclude
annotation, introduced in Jackson 2.0.Note that Jackson 2.3 changed default to
DEFAULT_INCLUSION
, which is roughly same as saying "whatever". This is important because it allows hierarchic default values to be used.- Default:
- com.fasterxml.jackson.databind.annotation.JsonSerialize.Inclusion.DEFAULT_INCLUSION
-
-