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

相关推荐
陈天伟教授7 分钟前
人工智能训练师认证教程(2)Python os入门教程
前端·数据库·python
陈文锦丫10 分钟前
MQ的学习
java·开发语言
乌暮19 分钟前
JavaEE初阶---线程安全问题
java·java-ee
爱笑的眼睛1125 分钟前
GraphQL:从数据查询到应用架构的范式演进
java·人工智能·python·ai
Seven971 小时前
剑指offer-52、正则表达式匹配
java
聪明努力的积极向上1 小时前
【MYSQL】字符串拼接和参数化sql语句区别
数据库·sql·mysql
信看1 小时前
NMEA-GNSS-RTK 定位html小工具
前端·javascript·html
代码or搬砖1 小时前
RBAC(权限认证)小例子
java·数据库·spring boot
Tony Bai1 小时前
【API 设计之道】04 字段掩码模式:让前端决定后端返回什么
前端