Jackson使用@JsonInclude配置实现,当controller返回前端的对象里有个属性为null的时候自动忽略这个属性,即不返回该属性
发布日期:2021-11-02 12:48:56 浏览次数:128 分类:技术文章

本文共 1222 字,大约阅读时间需要 4 分钟。

后端返回给前端JSON格式的对象数据中,当对象的字段为NULL时,该字段也会写入JSON返回;而很多时候前端期望后端只返回对象中非null的字段数据。在Jackson框架中提供了 @JsonInclude 注解以实现该功能

不返回null字段数据

在相关对象的类或对应字段上添加 @JsonInclude 注解,设定值为 NON_NULL

@JsonInclude(JsonInclude.Include.NON_NULL)public class Student{
private int id; private String username; private String sex; //字段上则只对这个字段生效 @JsonInclude(JsonInclude.Include.NON_NULL) private String address; ...}

则HTTP Response返回的该类的对象的JSON数据如下所示,无为null的字段

{
"id": 0, "username": "Kallen", "sex": "female"}

返回null字段数据

在相关对象的类或对应字段上添加 @JsonInclude 注解,设定值为 ALWAYS

@JsonInclude(JsonInclude.Include.ALWAYS)

则HTTP Response返回的该类的对象的JSON数据如下所示,其中包含null的字段

{
"id": 0, "username": "Kallen", "sex": "female", "address": null}

下面这些操作只有在接口返回的bean里的这个属性不是必需的时候才能这样玩,不然千万不要这样玩

在controller返回前端的时候单个实体类需要在属性值为null的时候忽略这个属性

加注解前,返回的属性的value是null

在这里插入图片描述

加注解后

在这里插入图片描述

这里data里的实体类是OrderDTO,所以在OrderDTO上加@JsonInclude(JsonInclude.Include.NON_NULL)注解即可

但是当有很多很多的实体类都需要这样时,如果允许全局都这样操作,可以在spring的启动yml文件中配置

spring:  jackson:    default-property-inclusion: non_null

也可以手动设置

demo

ObjectMapper objectMapper = new ObjectMapper()//JsonInclude.Include.ALWAYS则是序列化的时候包含null值字段objectMapper.setDefaultPropertyInclusion(JsonInclude.Include.NON_NULL)

在这里插入图片描述

转载地址:https://blog.csdn.net/weixin_43944305/article/details/103848927 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:格式化时间字符串yyyy-MM-dd和YYYY-MM-dd的区别,HH:mm:ss和hh:mm:ss的区别,格式化LocalDateTime.now()和Date,时间戳和时间互转
下一篇:java将List里的Map按照某一个key的value比较大小后排序,使用Collections.sort自定义排序,Arrays.sort重排(字符重排demo)

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月18日 11时52分49秒