宇筱博客

  • 解决办法
  • 学无止境
  • 记录时光
  • 百宝箱
宇筱博客
点滴记忆,汇聚成海。
  1. 首页
  2. 解决办法
  3. 正文

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

2022年10月13日 889点热度 0人点赞 0条评论

当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>

原文连接:点击进入

标签: 暂无
最后更新:2022年11月1日

小渔民

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2025 宇筱博客. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

豫ICP备15017825号-2