它总是包含所有的字段

发布时间:2025-06-24 19:20:39  作者:北方职教升学中心  阅读量:018


它总是包含所有的字段。

  •  枚举定义了几种常用的序列化策略:ALWAYS。Include。`NON_EMPTY` 和 `CUSTOM`。
  • :仅包含非 null 的字段。让我们来看看它的源代码,更详细地了解它的实现情况。

    `@JsonInclude` 这是一个注释,它使用 `@Target` 和 `@Retention` 元注释指定了它可以应用的目标和生命周期。 属性,类型为 。

    一、

  • :总是包含字段(默认行为)。

    第一个,`@JsonInclude` 这是一个注释,所以我们会在那里 Java 在源代码中找到它。null。@JsonInclude。 其中一个注释 。`NON_ABSENT`、

     注释可以灵活地控制这些字段的序列化行为:

    import com.fasterxml.jackson.annotation.JsonInclude;public class Person { private String name; @JsonInclude(JsonInclude.Include.NON_NULL) private Integer age; @JsonInclude(JsonInclude.Include.NON_EMPTY) private String address; // Constructors, getters, and setters}。:age。

    @JsonInclude。value。

    在使用 `@JsonInclude` 注释,可以指定 `value` 属性是这些预定义条件之一c;包含条件也可以根据需要定制。在 Jackson 库中,它通常位于 `com.fasterxml.jackson.annotation` 包中。

    在 `@JsonInclude` 在声明中,通常会有一种类型的枚举 `Include` 用于指定包含的条件。

 只有在值不值空的时候才有字段(例如,
  • :只包括非空字段(适用于集合或字符串)。 只有在值不为字段 。NON_EMPTY。`Include` 枚举定义了几个预定义的包含条件,比如 `ALWAYS`、Include。可应用于注释类型和类型,并在运行过程中保留。`NON_NULL`、

    • 在这个例子中,`NON_NULL`、ALWAYS。NON_NULL。

      `@JsonInclude` 是 Jackson 图书馆中的注释,用于控制序列化 Java 对象为 JSON 在格式中应包含哪些属性࿰?c;以及在什么情况下包含这些属性。。使用场景示例。

      `@JsonInclude` 注释有一个属性 `value`,它的类型是 `Include` 枚举,默认值是 `Include.ALWAYS`。 枚举,默认值为 。假设我们有一个 Java 类 。使用 。Person。

    :自定义的序列化规则可以定义。源码分析。NON_ABSENT。如果不指定 `value` 属性,默认包含条件是 `ALWAYS`,也就是说,不是空字符串或空集合)它将被序列化。,有些字段可能是空的或不需要序列化。CUSTOM。`NON_EMPTY` 等。@JsonInclude。 `@JsonInclude` 源代码:

    import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Target({ElementType.ANNOTATION_TYPE, ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)public @interface JsonInclude {    Include value() default Include.ALWAYS;    public enum Include {        ALWAYS,         // 总是包含字段        NON_NULL,       // 仅包含非 null 的字段        NON_ABSENT,     // 仅包含非 absent 的字段        NON_EMPTY,      // 只包含非空字段        CUSTOM;         // 使用自定义规则    }}。

    接下来,让我们来看看简化版。address。

  •  时间会被序列化。
  • )。

    二、这种枚举类型包含了一些预定义条件,比如 `ALWAYS`、:仅包含非 absent 字段(例如,Optional.empty()。