SpringMVC中用@ResponseBody返回JSON数据时,NULL字段不进行JSON序列化

在SpringMVC 的Controller层中,在返回JSON数据的时候,若要对NULL字段不显示,也就是不对NULL的字段进行JSON序列化,那么有以下几种方法。

1.在实体类中加注解
//将该标记放在属性上,如果该属性为NULL则不参与序列化 
//如果放在类上边,那对这个类的全部属性起作用 
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)  

以上两种注解任选其一,主要加在实体类上即可。
示例:
未加注解前,输出JSON数据,NULL字段也被序列化显示
SpringMVC中用@ResponseBody返回JSON数据时,NULL字段不进行JSON序列化_第1张图片
在实体类加了注解后

@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省略
}

输出结果:
SpringMVC中用@ResponseBody返回JSON数据时,NULL字段不进行JSON序列化_第2张图片
上图显示,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

SpringMVC中用@ResponseBody返回JSON数据时,NULL字段不进行JSON序列化_第3张图片

注: 在用fastjson转换为json格式字符串的时候,已经默认的不序列化NULL字段。

你可能感兴趣的:(Springboot运用,json,java,spring)