NOTE: when annotating creator methods (constructors, factory methods), method must either be:
JsonProperty
annotation for the argument: if so, this is so-called "delegate creator",
in which case Jackson first binds JSON into type of the argument, and
then calls creator. This is often used in conjunction with JsonValue
(used for serialization).
JsonProperty or JacksonInject, to indicate name
of property to bind to
JsonProperty annotations must specify actual name
(NOT empty String for "default") unless you use one of extension modules
that can detect parameter name; this because default JDK versions before 8
have not been able to store and/or retrieve parameter names from bytecode.
But with JDK 8 (or using helper libraries such as Paranamer, or other JVM
languages like Scala or Kotlin), specifying name is optional.
One common use case is to use a delegating Creator to construct instances from
scalar values (like java.lang.String) during deserialization,
and serialize values using JsonValue.
Note
As of Jackson 2.6, use of JsonProperty#required() is supported
for Creator methods (but not necessarily for regular setters or fields!).
JsonProperty
| Modifier and Type | Class and Description |
|---|---|
| public static enum | JsonCreator.
Enumeration of possible |
| Modifier and Type | Method and Description |
|---|---|
| public JsonCreator. | Returns: Mode to use.Property that is used to indicate how argument(s) is/are bound for creator, in cases there may be multiple alternatives. |
| mode | back to summary |
|---|---|
| public JsonCreator. Property that is used to indicate how argument(s) is/are bound for creator,
in cases there may be multiple alternatives. Currently the one case is that
of a single-argument creator method, for which both so-called "delegating" and
"property-based" bindings are possible: since
delegating mode can not be used for multi-argument creators, the only choice
there is "property-based" mode.
Check
Default value of
| |
mode values available.
| Modifier and Type | Field and Description |
|---|---|
| public static final JsonCreator. | DEFAULT
Pseudo-mode that indicates that caller is to use default heuristics for choosing mode to use. |
| public static final JsonCreator. | DELEGATING
Mode that indicates that if creator takes a single argument, the whole incoming data value is to be bound into declared type of that argument; this "delegate" value is then passed as the argument to creator. |
| public static final JsonCreator. | DISABLED
Pseudo-mode that indicates that creator is not to be used. |
| public static final JsonCreator. | PROPERTIES
Mode that indicates that the argument(s) for creator are to be bound from matching properties of incoming Object value, using creator argument names (explicit or implicit) to match incoming Object properties to arguments. |
| Access | Constructor and Description |
|---|---|
| private |
| Modifier and Type | Method and Description |
|---|---|
| public static JsonCreator. | |
| public static JsonCreator. |
| DEFAULT | back to summary |
|---|---|
| public static final JsonCreator. Pseudo-mode that indicates that caller is to use default heuristics for choosing mode to use. This typically favors use of delegating mode for single-argument creators that take structured types. | |
| DELEGATING | back to summary |
|---|---|
| public static final JsonCreator. Mode that indicates that if creator takes a single argument, the whole incoming data value is to be bound into declared type of that argument; this "delegate" value is then passed as the argument to creator. | |
| DISABLED | back to summary |
|---|---|
| public static final JsonCreator. Pseudo-mode that indicates that creator is not to be used. This can be used as a result value for explicit disabling, usually either by custom annotation introspector, or by annotation mix-ins (for example when choosing different creator). | |
| PROPERTIES | back to summary |
|---|---|
| public static final JsonCreator. Mode that indicates that the argument(s) for creator are to be bound from matching properties of incoming Object value, using creator argument names (explicit or implicit) to match incoming Object properties to arguments. Note that this mode is currently (2.5) always used for multiple-argument creators; the only ambiguous case is that of a single-argument creator. | |
| Mode | back to summary |
|---|---|
| private Mode() | |
| valueOf | back to summary |
|---|---|
| public static JsonCreator. | |
| values | back to summary |
|---|---|
| public static JsonCreator. | |