@JsonInclude序列化设置

该博客详细介绍了Jackson库中@JsonInclude注解的使用,包括如何在序列化时只包含非null和非空字段,以及其他高级设置如ALWAYS、NON_NULL、NON_ABSENT、NON_EMPTY、NON_DEFAULT和CUSTOM策略的解释和示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@JsonInclude,该注解仅在序列化操作时有用,用于控制属性是否应该被序列化。

序列化时只序列化非null字段

1. 实体类

@Data
@JsonInclude(JsonInclude.Include.NON_NULL) //只序列化不为null的属性
public class User {
    private Integer id;
    private String name;
}
注:
  @JsonInclude(JsonInclude.Include.NON_NULL) 也可以加在属性上,
  表示如果某个对象的该属性为null,则不会序列化该属性。如:
@Data
public class User {
    private Integer id;
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String name;
}

2. 接口

@GetMapping
public User getUser(){
    User user = new User();
    user.setId(1);  //没有设置name属性的值,为null
    return user;
}

3. 结果

{
  "id": 1
}

序列化时只序列化非空字段

1. 实体类

@Data
@JsonInclude(JsonInclude.Include.NON_EMPTY)  //null、集合数组等没有内容、空字符串等,都不会被序列化
public class User {
    private Integer id;
    private String name;
    private List<String> list = new ArrayList<>();
}

2. 接口

@GetMapping
public List<User> getUser(){
    List<User> userList = new ArrayList<>();
    
    User user1 = new User();
    user1.setId(1);
    user1.setName("");  
    userList.add(user1); //user1的name和list不会被序列化

    User user2 = new User();
    user2.setId(1);
    user2.setName("lalala");
    user2.getList().add("user2");
    userList.add(user2);
    return userList;
}

3. 结果

[
  {
    "id": 1
  },
  {
    "id": 1,
    "name": "lalala",
    "list": [
      "user2"
    ]
  }
]

其他设置

ALWAYS // 默认策略,任何情况都执行序列化
NON_NULL // 非空
NON_ABSENT // null的不会序列化,但如果类型是AtomicReference,依然会被序列化
NON_EMPTY // null、集合数组等没有内容、空字符串等,都不会被序列化
NON_DEFAULT // 如果字段是默认值,就不会被序列化
CUSTOM // 此时要指定valueFilter属性,该属性对应一个类,用来自定义判断被JsonInclude修饰的字段是否序列化
USE_DEFAULTS // 当JsonInclude在类和属性上都有时,优先使用属性上的注解,此时如果在序列化的get方法上使用了JsonInclude,并设置为USE_DEFAULTS,就会使用类注解的设置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值