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注解不同

相关推荐
ssshooter2 小时前
Tauri 踩坑 appLink 修改后闪退
前端·ios·rust
刮涂层_赢大奖2 小时前
我把 AI 编程 Agent 变成了宝可梦,让它们在像素风办公室里跑来跑去
前端·typescript·claude
重庆穿山甲3 小时前
Java开发者的大模型入门:Spring AI组件全攻略(二)
前端·后端
重庆穿山甲3 小时前
Java开发者的大模型入门:Spring AI组件全攻略(一)
前端·后端
布列瑟农的星空3 小时前
前端都能看懂的rust入门教程(二)——函数和闭包
前端·后端·rust
晨米酱3 小时前
四、Prettier 编辑器集成指南
前端·代码规范
文心快码BaiduComate4 小时前
Comate 4.0新年全面焕新!底层重构、七大升级、复杂任务驾驭力跃升
前端·程序员·架构
怪可爱的地球人4 小时前
uni-app:5 步接入 vite-plugin-uni-pages,用 <route> 自动生成 pages.json
前端
前端Hardy4 小时前
告别 !important:现代 CSS 层叠控制指南,90% 的样式冲突其实不用它也能解
前端·vue.js·面试
前端Hardy4 小时前
Vue 3 性能优化的 5 个隐藏技巧,第 4 个连老手都未必知道
前端·vue.js·面试