Java | 数据一致性校验遇到的时间序列化格式不一致问题如何解决?

关注:CodingTechWork

需求

设计

在开发过程中,有数据一致性校验需求。如下设计:

  1. 对于一些安全数据进行加密处理,并将这个加密值进行存储。
  2. 当再次查询时,对当前数据进行加密并比对之前的加密值,看是否一致?若一致,则未被篡改,否则,有篡改风险。

问题

  1. 某些字段是不需要序列化后加密的,则需要屏蔽掉。
  2. 时间字段的格式有的序列化为了"2023-11-30T18:55:32.401",有的序列化为了"2023-11-30T18:55:32",格式不一致。

序列化问题解决方案

时间字段序列化处理

java 复制代码
    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
    @JsonSerialize(using = LocalDateTimeSerializer.class)
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime startTime;

无需序列化字段处理

可以在字段上使用@JSONField注解进行序列化开关

java 复制代码
    @JSONField(serialize = false)
    private String str;

时间一致性序列化统一处理

在使用fastjson进行序列化时,我们可以使用JSON.toJSONStringWithDateFormat()方法进行时间格式的统一准换。

java 复制代码
public <T> String toJsonStr(T t) {
   if (t == null) {
   		return null;
   }
   try {
   	 String data = JSON.toJSONStringWithDateFormat(t, "yyyy-MM-dd HH:mm:ss");
   } catch(Exception e) {
     log.error(e)
     throw new RuntimeException(e);
   }
   return data;
}
相关推荐
数据库小学妹3 小时前
MySQL表碎片与 OPTIMIZE TABLE:空间回收的代价与边界
数据库·后端·mysql
故图3 小时前
全字段 INSERT IGNORE:大约 70 行零日期,把证照列表加载打崩
后端
Json____3 小时前
用 FastAPI + Vue3 打造一套健身私教课预约管理系统
后端·fastapi·it学习·wwwoop.com
一条泥憨鱼4 小时前
【Redis | 黑马点评】基于Redis的消息队列 | stream消息队列 源码解读
java·数据库·redis·缓存·lua
aibo8603084 小时前
基于 Spring Boot + Vue3 的博物馆藏品管理系统设计与实现
java·spring boot·后端
苍何4 小时前
Codex+Obsidian,多平台同步,一键分发,太香了!
后端
fanruitian4 小时前
python 进程 线程
java·前端·python
\光辉岁月/4 小时前
javaSE8-新特性-Stream&Option
java·stream·option
zzu123zsw4 小时前
把条件校验收敛到枚举接口:Spring Boot 统一断言模式与零污染异常切面工程化
java·spring boot·后端·架构设计
SL_staff4 小时前
计划系统落地难?从开发者视角重构执行入口体验
java·开源·全栈