当前位置: 首页 > news >正文

java全局处理Date和LocalDateTime,统一响应固定格式

引言: 在java开发中,用于接收或响应前端数据时,会定义相对应的字段类型,字段类型除了一些基础数据类型,对于时间类型,一般会使用Date,或者LocalDateTime,但是每次都需要在与前端进行交互时,对字段进行格式化,比较麻烦,以下为全局处理示例:

一、原有处理形式

import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;public class YourEntity {// 对java.util.Date类型@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")private Date yourDate;// 对LocalDateTime类型@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")private LocalDateTime yourLocalDateTime;// getter和setter
}

二、全局处理

package com.config;import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.TimeZone;@Configuration
public class JacksonConfig {// 定义统一的日期格式public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";@Beanpublic MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {ObjectMapper objectMapper = new ObjectMapper();// 1. 配置时区objectMapper.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));// 2. 处理java.util.Date类型SimpleDateFormat dateFormat = new SimpleDateFormat(DEFAULT_DATE_TIME_FORMAT);objectMapper.setDateFormat(dateFormat);// 3. 处理Java 8日期时间类型(LocalDateTime等)JavaTimeModule javaTimeModule = new JavaTimeModule();// 序列化配置(后端到前端)javaTimeModule.addSerializer(LocalDateTime.class,new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)));// 反序列化配置(前端到后端)javaTimeModule.addDeserializer(LocalDateTime.class,new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)));objectMapper.registerModule(javaTimeModule);// 4. 关闭日期作为时间戳输出objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);// 5、忽略未知字段,避免JSON中存在多余字段时解析失败objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);return new MappingJackson2HttpMessageConverter(objectMapper);}
}

通过上述代码全局配置后,可以同时处理实体中字段类型为Date以及类型为LocalDateTime,达到统一时间格式返回前端,避免在每个时间字段上添加注解配置。

http://www.dtcms.com/a/350439.html

相关文章:

  • 无刷电机控制 - STM32F405+CubeMX+HAL库+SimpleFOC08,速度闭环控制(有电流环)
  • xm-select多选组件在layer.open中使用、获取、复现
  • 交叉导轨在医疗设备领域中的应用
  • 5G与6G技术演进与创新对比分析
  • 在线旅游及旅行管理系统项目SQL注入
  • 力扣(用队列实现栈)
  • STL——vector的使用(快速入门详细)
  • c++26新功能—带原因说明的删除函数
  • 用 PyTorch 从零实现 MNIST 手写数字识别
  • 微论-神经网络中记忆的演变
  • volatile关键字:防止寄存器操作被优化
  • Java设计模式-装饰器模式:从“咖啡加料”到Java架构
  • 动态线程池核心解密:从 Nacos 到 Pub/Sub 架构的实现与对比
  • 使用百度统计来统计浏览量
  • 网易算法岗位--面试真题分析
  • 江苏安全员 A 证 “安全生产管理” 核心考点
  • 【笔记】Roop 之 NSFW 检测屏蔽测试
  • 电池分选机:破解电池性能一致性难题的自动化方案|深圳比斯特
  • 【车载开发系列】ParaSoft集成测试环境配置(五)
  • Seaborn数据可视化实战:Seaborn数据可视化实战入门
  • 我的小灶坑
  • 使用 gemini 来分析 github 项目
  • 【Day 33】Linux-Mysql日志
  • Linux 系统内存不足导致服务崩溃的排查方法
  • 跨站脚本攻击(XSS)分类介绍及解决办法
  • 单北斗变形监测系统应用维护指南
  • 59 C++ 现代C++编程艺术8-智能指针
  • 探索量子计算的新前沿
  • 深度学习之第三课PyTorch( MNIST 手写数字识别神经网络模型)
  • Telematics Control Unit(TCU)的系统化梳理