@JsonInclude注解增加自定义校验规则

顺便看看@JsonInclude的常用策略:


JsonInclude.Include.ALWAYS 默认策略,无论如何都会序列化该字段,写不写效果都一样;

JsonInclude.Include.NON_NULL 最常用,如果该字段为null,就不序列化;

JsonInclude.Include.NON_ABSENT 没用过,不清楚。

JsonInclude.Include.NON_EMPTY 这个属性包含NON_NULL,NON_ABSENT之后还包含如果字段为空也不序列化。

JsonInclude.Include.NON_DEFAULT 这个属性是如果该字段为默认值的话就不序列化。

JsonInclude.Include.USE_DEFAULTS 如果有默认值的话就不序列化。

JsonInclude.Include.CUSTOM 这个就是自定义校验规则,下面详细讲:


如何使用:

value = JsonInclude.Include.CUSTOM

@JsonInclude(value = JsonInclude.Include.CUSTOM, valueFilter = UsernameFilter.class)
private String username;

自定义一个UsernameFilter类:

重写它的equals方法,在里面做你的校验逻辑,如果返回true,就不序列化 username 字段

public class UsernameFilter{

    @Override
    public boolean equals(Object obj) {
        if(//todo) return true
        return false;
    }
}
上一篇:智能快递柜工控主板选型要点分析


下一篇:如何配置Bitnami Redmine中的邮件通知服务