@JsonFormat、@JSONField、@DateTimeFormat的使用以及其区别

摘要:
三者出处1、JsonFormat来源于jackson,Jackson是一个简单基于Java应用库2、JSONField来源于fastjson,是阿里巴巴的开源框架,主要进行JSON解析和序列化。format@JSONField主要用于格式化日期,比如前台传过来的时间是2018-07-1217:44:08,但是通过这个注解,你存到数据库的时间就是2018-07-1200:00:00.4.总结注解@JsonFormat主要是后台到前台的时间格式的转换注解@DataTimeFormat主要是前后到后台的时间格式的转换注解@JSONField主要用在java反序列化时进行属性的匹配。
三者出处

1、JsonFormat来源于jackson,Jackson是一个简单基于Java应用库
2、JSONField来源于fastjson,是阿里巴巴的开源框架,主要进行JSON解析和序列化。
3、DateTimeFormat是spring自带的处理框架,主要用于将时间格式化。

1.注解@JsonFormat

用处:从数据库获取时间传到前端进行展示的时候,我们有时候可能无法得到一个满意的时间格式的时间日期,在数据库中显示的是正确的时间格式,获取出来却变成了很丑的时间戳,@JsonFormat注解很好的解决了这个问题,我们通过使用@JsonFormat可以很好的解决:后台到前台时间格式保持一致的问题

import java.util.Date; 
import com.fasterxml.jackson.annotation.JsonFormat;
  
public class TestClass {
    //设置时区为上海时区,时间格式自己据需求定。
    @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
    private Date testTime;
  
    public Date gettestTime() {
        return testTime;
    }
  
    public void settestTime(Date testTimee) {
        this.testTime= testTime;
    }
}

@JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")

pattern:是你需要转换的时间日期的格式

timezone:是时间设置为东八区,避免时间在转换中有误差

使用了上面的注解,我们用对应的实体类来接收数据库查询出来的结果时就完成了时间格式的转换,再返回给前端时就是一个符合我们设置的时间格式了

2.注解@DateTimeFormat

用处:我们在使用WEB服务的时,可能会需要用到,传入时间给后台,比如注册新用户需要填入出生日期等,这个时候前台传递给后台的时间格式同样是不一致的,而我们的与之对应的便有了另一个注解,@DataTimeFormat便很好的解决了这个问题

@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date symstarttime;
 
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date symendtime;

这里我两个注解都同时使用了,因为我既需要取数据到前台,也需要前台数据传到后台,都需要进行时间格式的转换,可以同时使用

3.注解@JSONField

用法:目前最长的用属性是@JSONField(name=”resType”)和 @JSONField(format=”yyyy-MM-dd”)

name:@JSONField(name=”resType”)主要用于指定前端传到后台时对应的key值,如果bean中没有这个注解,则默认前端传过来的key是field本身,即如果是private String name,name前端对应的key就是name才能对应上。

format @JSONField(format=”yyyy-MM-dd”)主要用于格式化日期,比如前台传过来的时间是2018-07-12 17:44:08,但是通过这个注解,你存到数据库的时间就是2018-07-12 00:00:00.

4.总结

注解@JsonFormat主要是后台到前台的时间格式的转换

注解@DataTimeFormat主要是前后到后台的时间格式的转换

注解@JSONField主要用在java反序列化时进行属性的匹配。例如数据里key是name,实体类是userName,则使用@JSONField(name=”name”)则可以实现映射关系。

注解@JsonProperty主要用在java序列化时,使用@JsonProperty注解里value指定的值,反序列化时会将值赋值到属性字段上面

站在巨人肩膀上摘苹果

https://www.cnblogs.com/mracale/p/9828346.html

https://blog.csdn.net/qq_28483283/article/details/81326365

免责声明:文章转载自《@JsonFormat、@JSONField、@DateTimeFormat的使用以及其区别》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇利用linux的df和du命令查看文件和目录的内存占用使用 python 创建&更改 word 文档下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

如何在jenkins上新建一个项目及其简单配置

单击[新建]进入选择页面,您可以在此页面上配置项目(包括拉取源代码、修改连续构建时间以及在打包和部署之前修改配置文件)3。在General中,您可以设置要构建的版本,如下图5所示。在源代码管理模块中,您可以设置源代码地址(我们公司常用的Git)6。如果是自动构建,您可以将自动构建时间(即构建频率)设置为7。以下是构建中的一些设置。您可以使用shell修改源代...

SpringBoot工程通过Maven引入自定义Jar包

A工程为:common工程打成jar包:common-0.0.1-SNAPSHOT.jar注意:A工程打包时要使用maven的插件进行打包,不然会打成SpringBoot的Jar包,无法使用。--字符集编码--˃打包时跳过测试配置1.8˂!...

MySQL学习笔记:字符串前后补全0

遇到一个要求:如果位数小于6,则需要使用函数LPAD()和RPAD()自动完成6位。LPAD使用字符串padstr填充并完成左侧的str,直到其长度达到len个字符,并返回str。...

selenium自动化之鼠标操作

,selenium为我们提供了一个处理此类事件的类——ActionChains。ActionChains可以模拟鼠标操作,例如单击、双击、右键单击、拖动等。鼠标移动时演示页面的截图:demo1.使用鼠标移动到WriteonOver按钮的顶部。python脚本如下:读取鼠标移动代码,首先定义浏览器驱动程序,最大化窗口,打开测试页面URL,定位到测试按钮顶部,定...

如何设置Navicat的显示字体与字体大小?

方法/步骤打开Navicat点击菜单,再选择在界面,点击下的设置网格字体和大小设置编辑器字体和大小设置命令列界面字体和大小设置ER图表字体和大小,最后点击END...

带EFI支持的GRUB2安装全记录

--引导目录#定义引导目录。默认前缀是/boot/grub2,因此我们可以直接定义/。但是,如果您将其安装在EFI系统上,则可以直接写入EFI的装载点=====2016-02-26===============在新版本的grub2中找不到引导目录参数。特别是,在安装EFI时,需要将其更改为--EFI目录,否则您将找不到EFI目录的错误。grub2-insta...