后端接口返回json时,对空值""、null做过滤处理,我们知道一般用:
spring.jackson.defaultPropertyInclusion
后面可以跟:
ALWAYS // 默认策略,任何情况都执行序列化
NON_NULL // 非空
NON_ABSENT // null的不会序列化,但如果类型是AtomicReference,依然会被序列化
NON_EMPTY // null、集合数组等没有内容、空字符串等,都不会被序列化
NON_DEFAULT // 如果字段是默认值,就不会被序列化
CUSTOM // 此时要指定valueFilter属性,该属性对应一个类,用来自定义判断被JsonInclude修饰的字段是否序列化
USE_DEFAULTS // 当JsonInclude在类和属性上都有时,优先使用属性上的注解,此时如果在序列化的get方法上使用了JsonInclude,并设置为USE_DEFAULTS,就会使用类注解的设置 1234567
以上解释参考:jsonfield注解不生效_jackson学习之五:JsonInclude注解_weixin_39907131的博客-CSDN博客
我们项目中是这么用的:
spring.jackson.defaultPropertyInclusion=NON_EMPTY
这种会过滤掉""、null
但是同时又有几个特殊接口需要返回"",所以要对这几个接口做特殊处理。
处理方法:在返回的实体类上加上
@JsonInclude(JsonInclude.Include.NON_NULL)
举例:
@JsonInclude(JsonInclude.Include.NON_NULL) public class MarcTemplateResourceVO { /** * ID */ @ApiModelProperty(value = "ID", name = "id") private String id; /** * 头标区(000) */ @ApiModelProperty(value = "头标区(000)") private String leader; }
这样处理,这个实体类对应的接口返回中就会带上 ""