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

这篇具有很好参考价值的文章主要介绍了Java后端返回的MySQL日期数据在前端格式错误的解决方法,区分jackson和fastjson。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面

在写web项目的时候经常会遇到后端返回的MySQL日期数据(date)类型在前端显示不正确的情况,有的时候会出现一串数字的时间戳,有的时候显示为日期晚了一天。
Java后端返回的MySQL日期数据在前端格式错误的解决方法,区分jackson和fastjson,java,mysql,前端

这是因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注解不同文章来源地址https://www.toymoban.com/news/detail-777325.html

到了这里,关于Java后端返回的MySQL日期数据在前端格式错误的解决方法,区分jackson和fastjson的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java根据前端所要格式返回树形3级层级数据

    一、业务分析,根据前端需求返回如下数据格式   二、后端设计数据类型VO 三、代码实现 1.编写Controller 2.编写Service 3、结果展示            

    2024年02月19日
    浏览(43)
  • java后端返回数据给前端时去除值为空或NULL的属性、忽略某些属性

    目录 一、使用场景 二、环境准备 1、引入依赖 2、实体类 三、示例 1、不返回空值 (1)方式 (2)测试 (3)说明 2、不返回部分属性 (1)方式 (2)测试 四、 Jackson常用注解 1、 @JsonProperty 2、@JsonPropertyOrder 3、@JsonInclude 4、@JsonIgnoreProperties 5、@JsonFormat 6、@JsonUnwrapped         在开发过程

    2024年02月04日
    浏览(50)
  • Java后端返回PDF预览给前端

    前端要预览服务器PDF 可直接将要blob流返回给前端 即可用浏览器自带pdf预览功能打开,现有两种方式 方式1 返回blob流给前端 代码如下        此时 前端解析可直接拿返回的文件流 例子如下 但有的时候 不想返回文件流 可把文件返回为base64 (注意 base64可能超长)此时代码修

    2024年02月08日
    浏览(58)
  • 后端返回文件流时,前端如何处理并成功下载流文件以及解决下载后打开显示不支持此文件格式

    文件(File)和流(Stream)是既有区别又有联系的两个概念。 文件 是计算机管理数据的基本单位,同时也是应用程序保存和读取数据的一个重要场所。       存储介质:文件是指在各种存储介质上(如硬盘、可移动磁盘、CD等)永久存储的数据        的有序集合,它是进行数

    2024年02月09日
    浏览(75)
  • Java后端向前端返回文件流——实现下载功能!

    前端实现文件下载功能有多种方法,这里就不一一介绍,这里只介绍使用文件流下载的实现方法。 既然是文件流那就肯定需要给前端返回一堆二进制编码,作为后端就可以返回一个 OutPutStream 后端可以使用Java中servlet提供的 HttpServletResponse ,核心步骤是要设置响应的数据类型

    2024年02月08日
    浏览(47)
  • Java后端向前端返回文件流——实现下载功能

    前端实现文件下载功能有多种方法,这里就不一一介绍,这里只介绍使用文件流下载的实现方法。 既然是文件流那就肯定需要给前端返回一堆二进制编码,作为后端就可以返回一个 OutPutStream 后端可以使用Java中servlet提供的 HttpServletResponse ,核心步骤是要设置响应的数据类型

    2024年02月11日
    浏览(49)
  • java后端该怎样来接受前端日期选择器传入的时间参数

    如果前端使用了日期选择器并且将选择的日期传给了Java后端,那么Java后端可以使用如下方法来接收日期参数: 在后端的方法中声明一个形参,类型为 java.util.Date 或 java.time.LocalDate ,然后在前端的请求中传入的日期参数会被自动封装成相应的日期对象。例如: 在后端的方法

    2024年02月13日
    浏览(44)
  • 后端返回parentId,前端处理成children嵌套数据

    rouyi 的 vuetree函数结合elementui  el-table组件使用 把有parentId和id结构的数据处理成children嵌套数据,字段名称不一致,可以设置。 vuetree函数 :  

    2024年02月09日
    浏览(49)
  • Java后端大写字段传到前端,或者使用postman调用后,返回变为小写

    比如,我有一个类,然后该类中有一个字段 默认使用的是Jackson解析。Jackson在解析返回的json字符串时,全部大写字段被转为小写了,首字母如果是大写也会被转为小写 我在传输给前端,或者使用postman调用,或者存储到redis的时候,发现该字段不是YTD,而是ytd,没办法满足我

    2024年02月12日
    浏览(48)
  • 后端返回数据流,前端进行转换blob文件流

    1. 首先相应的头里面请求改为 responseType: \\\'blob\\\' 2.           let res = await getPhotoVideoUrl() --此处为模拟的获取一个视频流的地址;         const img = new Blob([res], { type: \\\'image/png\\\' });         let imgUrl = window.URL.createObjectURL(img); 3.拿到流的地址后,先进行new Blob进行创建一个对象。

    2024年02月13日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包