@Target(value={ANNOTATION_TYPE,METHOD,FIELD,TYPE,PARAMETER}) @Retention(value=RUNTIME) public @interface JsonInclude
Note that the main inclusion criteria (one annotated with value()
)
is checked on Java object level, for the annotated type,
and NOT on JSON output -- so even with JsonInclude.Include.NON_NULL
it is possible that JSON null values are output, if object reference
in question is not `null`. An example is AtomicReference
instance constructed to reference null
value: such a value
would be serialized as JSON null, and not filtered out.
To base inclusion on value of contained value(s), you will typically also need
to specify content()
annotation; for example, specifying only
value()
as JsonInclude.Include.NON_EMPTY
for a Map
would
exclude Map
s with no values, but would include Map
s
with `null` values. To exclude Map with only `null` value, you would use both
annotations like so:
public class Bean { @JsonInclude(value=Include.NON_EMPTY, content=Include.NON_NULL) public Map<String,String> entries; }Similarly you could exclude
Map
s that only contain
"empty" elements, or "non-default" values (see JsonInclude.Include.NON_EMPTY
and
JsonInclude.Include.NON_DEFAULT
for more details).
In addition to `Map`s, `content` concept is also supported for referential
types (like AtomicReference
).
Note that `content` is NOT currently (as of Jackson 2.9) supported for
arrays or Collection
s, but supported may be added in
future versions.
Modifier and Type | Optional Element and Description |
---|---|
JsonInclude.Include |
content
Inclusion rule to use for entries ("content") of annotated
Map s and referential types (like
AtomicReference );
defaults to JsonInclude.Include.ALWAYS . |
Class<?> |
contentFilter
Specifies type of "Filter Object" to use in case
content() is JsonInclude.Include.CUSTOM :
if so, an instance is created by calling HandlerInstantiator
(of ObjectMapper ), which by default simply calls
zero-argument constructor of the Filter Class. |
JsonInclude.Include |
value
Inclusion rule to use for instances (values) of types (Classes) or
properties annotated; defaults to
JsonInclude.Include.ALWAYS . |
Class<?> |
valueFilter
Specifies type of "Filter Object" to use in case
value() is JsonInclude.Include.CUSTOM :
if so, an instance is created by calling HandlerInstantiator
(of ObjectMapper ), which by default simply calls
zero-argument constructor of the Filter Class. |
public abstract JsonInclude.Include value
JsonInclude.Include.ALWAYS
.public abstract JsonInclude.Include content
Map
s and referential types (like
AtomicReference
);
defaults to JsonInclude.Include.ALWAYS
.public abstract Class<?> valueFilter
value()
is JsonInclude.Include.CUSTOM
:
if so, an instance is created by calling HandlerInstantiator
(of ObjectMapper
), which by default simply calls
zero-argument constructor of the Filter Class.
Whether the value is to be included or not is determined by calling
Filter's equals(value)
method: if it returns true
value is NOT included (it is "filtered out"); if false
value
IS included ("not filtered out").
public abstract Class<?> contentFilter
content()
is JsonInclude.Include.CUSTOM
:
if so, an instance is created by calling HandlerInstantiator
(of ObjectMapper
), which by default simply calls
zero-argument constructor of the Filter Class.
Whether the content value is to be included or not is determined by calling
Filter's equals(value)
method: if it returns true
content value is NOT included (it is "filtered out"); if false
content value
IS included ("not filtered out").
Copyright © 2008–2024 FasterXML. All rights reserved.