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

写在前面

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

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

解决方法

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

Tips:

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

Jackson类型的Json

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

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

@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类型(精确到天),同时注解中加上时区,解决可能的日期差一天的问题。

//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一般不会有时区导致的日期错误问题

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

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

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

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

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

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JacksonFastjson都是Java中常用的JSON处理库,用于在Java对象和JSON字符串之间进行转换。它们的主要区别在于以下几个方面: 1. 性能:在性能方面,Fastjson通常被认为是更快的库。Fastjson具有较高的解析和序列化速度,特别是对于大型JSON数据或复杂对象的处理。Jackson也具有良好的性能,但在某些情况下,Fastjson可能会更快。 2. 注解支持:JacksonFastjson都支持使用注解来定制JSON序列化和反序列化的行为。Jackson使用`@JsonProperty`、`@JsonSerialize`等注解,而Fastjson使用`@JSONField`注解。两者的注解支持相似,但具体的注解名称和用法有所不同。 3. API设计:Jackson的API设计较为复杂,提供了更多的灵活性和可定制性。它使用了一系列的`ObjectMapper`、`JsonNode`等类来处理JSON数据。相比之下,Fastjson的API设计相对简单,使用起来更加直观和方便。 4. 第三方框架集成:由于JacksonJava领域中使用最广泛的JSON库之一,许多框架和库都对其进行了集成支持。在某些情况下,一些第三方库可能更喜欢或更适配于JacksonFastjson在这方面的支持相对较少,但也有一些框架对其提供了支持。 总的来说,JacksonFastjson都是优秀的JSON处理库,选择哪个库取决于项目的具体需求和性能要求。如果对性能要求较高且需要更多的定制化能力,可以考虑使用Fastjson。如果项目已经集成了许多基于Jackson的库或框架,或者需要更大的生态系统支持,那么使用Jackson可能更为方便。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值