Annotation Interface JsonProperty
Value ("") indicates that the name of field (or, derived name of an accessor method (setter / getter)) is to be used as the property name without any modifications; a non-empty value can be used to specify a different name. Property name refers to the name used externally, as the property name in JSON objects (as opposed to internal name of field in Java Object).
NOTE: annotation with non-empty Value can NOT be used if declaring multiple Java fields in a single declaration like:
public class POJO { \@JsonProperty("a") public int a, b, c;since it would associate same annotation for all fields, leading to name collision.
Starting with Jackson 2.6 this annotation may also be
used to change serialization of Enum
like so:
public enum MyEnum { @JsonProperty("theFirstValue") THE_FIRST_VALUE, @JsonProperty("another_value") ANOTHER_VALUE; }as an alternative to using
JsonValue
annotation.
NOTE: for
Enum
s, empty String is a valid value (and
missing value
is taken as empty String), unlike for regular
properties, and does NOT mean "use default Enum name".
(handling fixed in Jackson 2.19)
Starting with Jackson 2.12 it is also possible to specify namespace
of property: this property is only used by certain format backends (most
notably XML).
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enum
Various options foraccess()
property, specifying how property may be accessed during serialization ("read") and deserialization ("write") (note that the direction of read and write is from perspective of the property, not from external data format: this may be confusing in some contexts). -
Optional Element Summary
Optional ElementsModifier and TypeOptional ElementDescriptionOptional property that may be used to change the way visibility of accessors (getter, field-as-getter) and mutators (constructor parameter, setter, field-as-setter) is determined, either so that otherwise non-visible accessors (like private getters) may be used; or that otherwise visible accessors are ignored.Property that may be used to document expected default value for the property: most often used as source information for generating schemas (like JSON Schema or protobuf/thrift schema), or documentation.int
Property that indicates numerical index of this property (relative to other properties specified for the Object).Optional namespace to use with data formats that support such concept (specifically XML); if so, used withvalue()
to construct fully-qualified name.boolean
Property that indicates whether a value (which may be explicit null) is expected for property during deserialization or not.Defines name of the logical property, i.e. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int
Marker value used to indicate that no index has been specified.static final String
Special value that indicates that handlers should use the default name (derived from method or field name) for property.
-
Field Details
-
USE_DEFAULT_NAME
Special value that indicates that handlers should use the default name (derived from method or field name) for property.- See Also:
-
INDEX_UNKNOWN
static final int INDEX_UNKNOWNMarker value used to indicate that no index has been specified. Used as the default value as annotations do not allow "missing" values.- See Also:
-
-
Element Details
-
value
String valueDefines name of the logical property, i.e. JSON object field name to use for the property. If value is empty String (which is the default), will try to use name of the field that is annotated. Note that there is no default name available for constructor arguments, meaning that Empty String is not a valid value for constructor arguments.- Default:
- ""
-
namespace
String namespaceOptional namespace to use with data formats that support such concept (specifically XML); if so, used withvalue()
to construct fully-qualified name.- Since:
- 2.12
- Default:
- ""
-
required
boolean requiredProperty that indicates whether a value (which may be explicit null) is expected for property during deserialization or not. If expected,BeanDeserialized
should indicate this as a validity problem (usually by throwing an exception, but this may be sent via problem handlers that can try to rectify the problem, for example, by supplying a default value).Note that as of 2.6, this property is only used for Creator Properties, to ensure existence of property value in JSON: for other properties (ones injected using a setter or mutable field), no validation is performed. Support for those cases may be added in the future. State of this property is exposed via introspection, and its value is typically used by Schema generators, such as one for JSON Schema.
Also note that the required value must come directly from the input source (e.g., JSON) and not from secondary sources, such as defaulting logic or absent value providers. If secondary sources are expected to supply the value, this property should be set to
false
. This is important because validation ofrequired
properties occurs before the application of secondary sources.- Default:
- false
-
index
int indexProperty that indicates numerical index of this property (relative to other properties specified for the Object). This index is typically used by binary formats, but may also be useful for schema languages and other tools.- Default:
- -1
-
defaultValue
String defaultValueProperty that may be used to document expected default value for the property: most often used as source information for generating schemas (like JSON Schema or protobuf/thrift schema), or documentation. It may also be used by Jackson extension modules; core `jackson-databind` does not have any automated handling beyond simply exposing this value through bean property introspection.It is possible that in future this annotation could be used for value defaulting, and especially for default values of Creator properties, since they support
required()
in 2.6 and above.- Default:
- ""
-
access
JsonProperty.Access accessOptional property that may be used to change the way visibility of accessors (getter, field-as-getter) and mutators (constructor parameter, setter, field-as-setter) is determined, either so that otherwise non-visible accessors (like private getters) may be used; or that otherwise visible accessors are ignored.Default value os
JsonProperty.Access.AUTO
which means that access is determined solely based on visibility and other annotations.- Default:
- AUTO
-