@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 {link java.util.List} would
exclude Lists with no Java elements, but would include Lists
with `null` elements. To exclude Lists with only nulls, you would use both
annotations like so:
public class Bean {
@JsonInclude(value=Include.NON_EMPTY, content=Include.NON_NULL)
public List<String> entries;
}
Similarly you could further exclude Lists, Maps or arrays that only contain
"empty" elements, or "non-default" values (see JsonInclude.Include.NON_EMPTY and
JsonInclude.Include.NON_DEFAULT for more details).| Modifier and Type | Optional Element and Description |
|---|---|
JsonInclude.Include |
content
Inclusion rule to use for entries ("content") of annotated
Maps; defaults to JsonInclude.Include.ALWAYS. |
JsonInclude.Include |
value
Inclusion rule to use for instances (values) of types (Classes) or
properties annotated.
|
public abstract JsonInclude.Include value
public abstract JsonInclude.Include content
Maps; defaults to JsonInclude.Include.ALWAYS.Copyright © 2008–2016 FasterXML. All rights reserved.