当name和age都有值的时候返回结果如下:
{
"name":"小道仙",
"age":18
}
当name的值为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>
原文连接:点击进入
文章评论