行业资讯 2025年08月6日
0 收藏 0 点赞 671 浏览 1297 个字
摘要 :

文章目录 现象 解决办法 补充说明 总结 在使用jackson序列化json对象进行接口通信时,发现当对象中某个属性为null时,会导致在序列化传给接口时默认忽略掉了,我们该怎……




  • 现象
  • 解决办法
  • 补充说明
  • 总结

在使用jackson序列化json对象进行接口通信时,发现当对象中某个属性null时,会导致在序列化传给接口时默认忽略掉了,我们该怎么处理呢?

现象

我们先看下现象,这里首先是一个请求对象类:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class DmsDeviceAlarmRequest implements Serializable {
    @JsonIgnore
    private static final long serialVersionUID = -5349497848192665627L;

    private String pointId;
    private String deviceCode;
    private String deviceName;
    private String statusDesc;
    private String alarmLevel;
    @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\", timezone = \"GMT+8\")
    private Date beginTime;
}

然后我们的测试传输的对象中deviceName属性值为null,序列化后的json格式如下:jackson序列化忽略属性值为null字段怎么办

我们发现少了deviceName字段,也就是说为null的属性直接就被忽略掉不进行序列化了。

解决办法

解决办法非常简单,借助jackson的@JsonInclude注解,在原有的请求类上加上@JsonInclude(JsonInclude.Include.ALWAYS)注解即可:

@Data
@AllArgsConstructor
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.ALWAYS)
public class DmsDeviceAlarmRequest implements Serializable {
   //省略....
}

然后再次去测试发现序列化后的json格式如下:jackson序列化忽略属性值为null字段怎么办

由此可见JsonInclude.Include.ALWAYS可以保证无论属性字段是否为null都会进行序列化。

补充说明

@JsonInclude注解用在实体类或属性上,可配合如下参数使用

  • ALWAYS:表示总是序列化所有属性
  • NON_NULL:表示序列化非null属性
  • NON_ABSENT:表示序列化非null或者引用类型缺省值,例如java8的Optional类,这个选中通常与Optional一起使用
  • NON_EMPTY:表示序列化非Empty的属性,例如空的集合不会被序列化
  • NON_DEFAULT:仅包含与POJO属性默认值不同的值
  • CUSTOM:由{@link JsonInclude#valueFilter}指定值本身,或由{@link JsonInclude#contentFilter}指定结构化类型的内容,由过滤器对象的equals方法进行序列化,返回true则会被排除,返回false会被序列化
  • USE_DEFAULTS:使用默认值

总结

以上就是jackson序列化忽略属性值为null字段怎么办的解决办法,希望对你有帮助。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/10186.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号