JsonFormat


java 时间校验(格式化)

背景:从数据库获取时间传到前端进行展示的时候,我们有时候可能无法得到一个满意的时间格式的时间日期,在数据库中显示的是正确的时间格式,获取出来却变成了很丑的时间戳,@JsonFormat注解很好的解决了这个问题,我们通过使用@JsonFormat可以很好的解决:后台到前台时间格式保持一致的问题,其次,另一个问题是,我们在使用WEB服务的时,可能会需要用到,传入时间给后台,比如注册新用户需要填入出生日期等,这个时候前台传递给后台的时间格式同样是不一致的,而我们的与之对应的便有了另一个注解,@DataTimeFormat便很好的解决了这个问题,接下来记录一下具体的@JsonFormat与DateTimeFormat的使用过程。

后台到前台 属性类型date

import com.fasterxml.jackson.annotation.JsonFormat;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")

前台到后台 属性类型(date)string 直接sql存入

只能解析 url 拼接的字段 时间 对于json格式 RequestBody 不生效

@DateTimeFormat(pattern = "yyyy-MM-dd")

可以作用于 同一个竖向

如果使用get方法 浏览器默认会对空格进行转义+ 导致转换有问题

post
@RequestBody

一般都是使用@DateTimeFormat把 传给后台的时间字符串转成Date ,使用@JsonFormat 把后台传出的Date转成时间字符串 ,但是@DateTimeFormat只会在类似@RequestParam的请求参数(url拼接的参数才生效,如果是放到RequestBody中的form-data也是无效的)上生效,如果@DateTimeFormat放到@RequestBody下是无效的。

在@RequestBody中则可以使用@JsonFormat把传给后台的时间字符串转成Date,也就是说 @JsonFormat其实既可以把传给后台的时间字符串转成Date也可以把后台传出的Date转成时间字符串

前端传字符串

所以直接 date类型

不要忘记@RequestBody

import com.fasterxml.jackson.annotation.JsonFormat;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")

可以在yml里边统一配置

spring:
  jackson:
    #指定日期格式化时区,比如America/Los_Angeles或者GMT+10
    time-zone: GMT+8
    #日期格式化
    date-format: yyyy-MM-dd HH:mm:ss
    serialization:
      #格式化输出
      indent_output: true
      #忽略无法转换的对象
      fail_on_empty_beans: false


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM