如何用Jackson将null转换为0及0转换为null的示例代码实现?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1519个文字,预计阅读时间需要7分钟。
需求背景+最近遇到一个需求,有一个数值类型的字段,非必填,默认为空。数据库表针对该字段设计的是一个int类型,由于DBA推荐规范,默认值为not null。这时候,问题就来了,数据
需求背景
最近遇到一个需求,有个数值类型的字段,非必填,默认为空,数据库表针对该字段设计的是一个int类型, 由于dba推荐规范,默认该值是not null。这个时候,问题就来了,数据库默认存的是0,前端展示时,又不能显示这个0(需要的是null)
解决方案
针对此类处理,通常的方案有以下2种:
前端做处理,统一对0和null做处理,0即是null,null即是0
后端做处理,针对要处理的字段,在序列化之前或者之后做处理,或者采取硬编码的方式,针对要处理的字段,写if else
方案分析
针对第一种,这里面有个比较尴尬的地方,前端所接收的字段中,有些0是有意义的,譬如是否有效,0可能代表有效,如果统一做了处理,那这个改为null了,那就出问题了。假如不统一处理,则需要区别对待,由于对前端不熟,不知道是否有类似注解或者带标志的全局方法来处理类似问题,听前端说处理比较麻烦,so,只能后端来处理了。
针对第二种,后端处理的方式更灵活一些,想要简单可拓展,使用@JasonSerilize和@JsonDeserialize注解,写自定义序列化和反序列化类。想要快速完成,走硬编码。
本文共计1519个文字,预计阅读时间需要7分钟。
需求背景+最近遇到一个需求,有一个数值类型的字段,非必填,默认为空。数据库表针对该字段设计的是一个int类型,由于DBA推荐规范,默认值为not null。这时候,问题就来了,数据
需求背景
最近遇到一个需求,有个数值类型的字段,非必填,默认为空,数据库表针对该字段设计的是一个int类型, 由于dba推荐规范,默认该值是not null。这个时候,问题就来了,数据库默认存的是0,前端展示时,又不能显示这个0(需要的是null)
解决方案
针对此类处理,通常的方案有以下2种:
前端做处理,统一对0和null做处理,0即是null,null即是0
后端做处理,针对要处理的字段,在序列化之前或者之后做处理,或者采取硬编码的方式,针对要处理的字段,写if else
方案分析
针对第一种,这里面有个比较尴尬的地方,前端所接收的字段中,有些0是有意义的,譬如是否有效,0可能代表有效,如果统一做了处理,那这个改为null了,那就出问题了。假如不统一处理,则需要区别对待,由于对前端不熟,不知道是否有类似注解或者带标志的全局方法来处理类似问题,听前端说处理比较麻烦,so,只能后端来处理了。
针对第二种,后端处理的方式更灵活一些,想要简单可拓展,使用@JasonSerilize和@JsonDeserialize注解,写自定义序列化和反序列化类。想要快速完成,走硬编码。

