JsonInclude
Date: 2016-12-03

com.fasterxml.jackson.annotation

## Annotation Type JsonInclude

-     @Target(value={ANNOTATION_TYPE,METHOD,FIELD,TYPE,PARAMETER})
      @Retention(value=RUNTIME)
      public @interface JsonInclude

  Annotation used to indicate when value of the annotated property (when used for a field, method or constructor parameter), or all properties of the annotated class, is to be serialized. Without annotation property values are always included, but by using this annotation one can specify simple exclusion rules to reduce amount of properties to write out.

  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 `java.util.concurrent.atomic.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 `List`s with no Java elements, but would include `List`s 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).
  Since:
    2.0

- - ### Optional Element Summary

    Optional Elements
    Modifier and Type | Optional Element and Description
    --- | ---
    `JsonInclude.Include` | `content` Inclusion rule to use for entries ("content") of annotated `Map`s; defaults to `JsonInclude.Include.ALWAYS`.
    `JsonInclude.Include` | `value` Inclusion rule to use for instances (values) of types (Classes) or properties annotated; defaults to `JsonInclude.Include.ALWAYS`.

- - ### Element Detail

    - #### value

          public abstract JsonInclude.Include value

      Inclusion rule to use for instances (values) of types (Classes) or properties annotated; defaults to `JsonInclude.Include.ALWAYS`.
      Default:
        com.fasterxml.jackson.annotation.JsonInclude.Include.ALWAYS

    - #### content

          public abstract JsonInclude.Include content

      Inclusion rule to use for entries ("content") of annotated `Map`s; defaults to `JsonInclude.Include.ALWAYS`.
      Since:
        2.5
      Default:
        com.fasterxml.jackson.annotation.JsonInclude.Include.ALWAYS