JsonInclude注解
JsonInclude注解的主要作用是在序列化过程中指定哪些字段应该被包含在JSON输出中,哪些字段应该被排除。通过使用JsonInclude注解,开发者可以控制实体类在序列化为JSON时的行为,例如在某些情况下忽略某些字段。JsonInclude注解可以应用于实体类或其属性上,并配合不同的参数来定义序列化的策略。
策略参数
JsonInclude注解支持多种策略参数,每种参数定义了不同的序列化行为:
- ALWAYS:总是序列化所有属性。
- NON_NULL:仅序列化非null属性。
- NON_ABSENT:非null或引用类型的缺省值(如Optional类)会被序列化。
- NON_EMPTY:仅序列化非空的集合或数组。
- NON_DEFAULT:仅包含与POJO属性默认值不同的值。
- CUSTOM:通过valueFilter或contentFilter指定自定义的过滤逻辑。
- USE_DEFAULTS:使用默认值进行序列化。
使用场景和示例
JsonInclude注解可以用于控制实体类在序列化为JSON时的具体行为。例如,在一个用户实体类中,可以使用JsonInclude注解来指定某些字段在特定条件下不被序列化。以下是一个示例:
@JsonInclude(JsonInclude.Include.NON_NULL) public class User { private Long id; private String name; private Integer sex; // 此字段为null时不会被序列化 // ... 省略getter和setter方法 }
在这个例子中,sex
字段在序列化为JSON时如果为null则不会被包含在输出中。通过这种方式,可以有效地控制JSON输出的内容和结构,使得API返回的数据更加简洁和有用。
个人学习笔记,记录日常学习,便于查阅及加深,仅为方便个人使用。