在SpringMVC 的Controller层中,在返回JSON数据的时候,若要对NULL字段不显示,也就是不对NULL的字段进行JSON序列化,那么有以下几种方法。
1.在实体类中加注解
//将该标记放在属性上,如果该属性为NULL则不参与序列化
//如果放在类上边,那对这个类的全部属性起作用
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
以上两种注解任选其一,主要加在实体类上即可。
示例:
未加注解前,输出JSON数据,NULL字段也被序列化显示
在实体类加了注解后
@JsonInclude(JsonInclude.Include.NON_NULL)
public class User {
private String uId;
private String uPhone;
private String uOpenid;
private Integer uSex;
private String uWebname;
private Integer uLevel;
private Date uCreatetime;
private Integer uState;
private List<Carlicen> carlicenList;
//get和set省略
}
输出结果:
上图显示,NULL字段没有被序列化,已经不显示了。@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)同理,不做演示。
除了上述两种注解后,还有其他的一些注解,对序列化的各种情况做出设置。
//Include.Include.ALWAYS 默认
//Include.NON_DEFAULT 属性为默认值不序列化
//Include.NON_EMPTY 属性为 空(“”) 或者为 NULL 都不序列化
//Include.NON_NULL 属性为NULL 不序列化
2.在Springboot中的application.yml配置文件中修改
spring:
jackson:
default-property-inclusion: non_null
注: 在用fastjson转换为json格式字符串的时候,已经默认的不序列化NULL字段。