Java后端返回的MySQL日期数据在前端格式错误的解决方法,区分jackson和fastjson

写在前面

在写web项目的时候经常会遇到后端返回的MySQL日期数据(date)类型在前端显示不正确的情况,有的时候会出现一串数字的时间戳,有的时候显示为日期晚了一天。

这是因Json给前端返回数据的时候格式问题造成的

解决方法

其实总结起来就是一句话在Model部分对于JavaBean定义参数类型的时候,规定日期格式

Tips:

注意区分Jackson和FastJson以及其他的Json格式类型

Jackson类型的Json

注意区分Jackson和FastJson以及其他的Json格式类型,不同Json注解不同

如何在向前端返回数据的时候直接使用return 某一个对象那一般都会以Jackson的Json类型来向前端返回,例如:

java 复制代码
@GetMapping("getNews")
public List<News> getNews(int num) {
    List<News> news_list = projectService.getNews(num);
    return news_list;
}

那么对于这种情况,我们在News类中,就要在时间类型的变量上加上注解

这里Timestamp类型对应的是Mysql中的datetime类型(精确到时分秒),同时注解中加上时区,解决可能的日期差一天的问题。

Date类型对应Mysql中的date类型(精确到天),同时注解中加上时区,解决可能的日期差一天的问题。

java 复制代码
//Timestamp举例,对应Mysql中的datetime
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="Asia/Shanghai")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Timestamp time;

//Date,对应Mysql中的date
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "Asia/Shanghai")
private Date date;

FastJson类型的Json

注意区分Jackson和FastJson以及其他的Json格式类型,不同Json注解不同

在这个示例中,后端给前端返回的数据是先转为fastjson,再return的,那就不能使用jackson的注解格式,而要使用fastjson提供的注解。fastjson一般不会有时区导致的日期错误问题

java 复制代码
@GetMapping("getNewsTopWord")
public String getNewsTopWord(int num) {
    String jsonOutput = JSON.toJSONString(projectService.getNewsTopWord(num));
    return jsonOutput;
}

同样,在时间类型的变量上加上注解

这里Timestamp类型对应的是Mysql中的datetime类型(精确到时分秒)。

Date类型对应Mysql中的date类型(精确到天)。

java 复制代码
//Timestamp举例,对应Mysql中的datetime
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Timestamp time;

//Date,对应Mysql中的date
@JSONField(format = "yyyy-MM-dd")
private Date date;

总结

注意区分Jackson和FastJson以及其他的Json格式类型,不同Json注解不同

相关推荐
Southern Wind4 分钟前
Vue 3 多实例 + 缓存复用:理念及实践
前端·javascript·vue.js·缓存·html
代码不停17 分钟前
Java前缀和算法题目练习
java·开发语言·算法
豆沙沙包?18 分钟前
2025年--Lc200- 414. 第三大的数(大根堆)--Java版
java·开发语言
Cabbage_acmer24 分钟前
MySQL期中考试突击!
数据库·mysql
在下木子生25 分钟前
SpringBoot基于工厂模式的多类型缓存设计
java·spring boot·缓存
HuangYongbiao25 分钟前
Rspack 原理:webpack,我为什么不要你
前端
yinuo28 分钟前
前端项目开发阶段崩溃?试试这招“Node 内存扩容术”,立马复活!
前端
xxxxxxllllllshi29 分钟前
Java中Elasticsearch完全指南:从零基础到实战应用
java·开发语言·elasticsearch·面试·职场和发展·jenkins
前端鳄鱼崽30 分钟前
【react-native-inspector】全网唯一开源 react-native 点击组件跳转到编辑器
前端·react native·react.js
用户984022766791830 分钟前
【React.js】渐变环形进度条
前端·react.js·svg