SpringBoot值为null的数据不返回【Spring.jackson】

文章优先发表在个人博客:https://www.xdx97.com/article/737667404498206720

最近在公司写接口文档的时候发现,比如我们有一个实体A,里面有 name,age 两个变量。

当name和age都有值的时候返回结果如下:

{
    
    
	"name":"小道仙""age":18
}

当age的值为null的时候返回结果如下:

{
    
    
	"age":18
}

这在写接口文档的时候就很舒服了,不至于返回一大推没有用且为null的数据。

比如接口A使用到一个实体里面的10个变量,接口B使用到同一个实体里面的8个变量,而这个实体里面有15个变量,这时候其它变量就会为null,一来不美观,二来还可能存在暴露数据的风险。


起初我以为是配置了一个拦截器、或者过滤器,在结果返回之前进行数据拦截处理。当然了这个思路没错,我们也可以这样去写,只不过会比较麻烦。


解决方案

在SpringBoot里面已经集成了这样的方案,我们只需要进行简单的配置即可

1、使用注解的方式

在类或者变量上面加上下面这个注解

@JsonInclude(NON_NULL)

2、在yum文件里面配置

一个个注解是很麻烦的,我们可以在yml文件里面进行配置

spring:
    jackson:
    	default-property-inclusion: NON_EMPTY

除了这个我们可能使用的比较多的就Date类型的格式化了,同样可以使用注解和配置的方式(注解优先配置)

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
private Date date;
spring:
    jackson:
    	date-format: yyyy-MM-dd HH:mm:ss

其它

1、其实关于这个jackson的配置还有很多,可以根据自己的需求进行配置

https://www.cnblogs.com/wynjauu/articles/9273759.html


2、如果只是单纯的不想要返回值为null的数据,我们可以在查询数据的时候设置返回值为 Map

<select id="testSelect" resultType="java.util.HashMap">

</select>

猜你喜欢

转载自blog.csdn.net/Tomwildboar/article/details/107642660