Java中注解@JsonFormat的用法详解

Java中注解@JsonFormat的用法详解

什么是@JsonFormat注解

@JsonFormat 注解是 Jackson 提供的注解之一,用于在序列化和反序列化过程中格式化日期类型的数据。它可以将日期类型转化为指定格式的字符串类型,或将字符串类型转化为指定格式的日期类型。

语法格式

@JsonFormat 注解的语法格式如下:

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")

其中,shape 为枚举类型,表示日期时间序列化的形态,pattern 为日期时间序列化的格式,timezone 为时区。

使用示例

示例一:格式化Date类型数据

假设我们有一个类如下:

public class Person {
    private String name;
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date birthday;
    // getter、setter 略
}

其中,birthday 字段使用了 @JsonFormat 注解,指定了日期格式为 yyyy-MM-dd,时区为 GMT+8

下面是序列化成 JSON 格式的示例:

ObjectMapper mapper = new ObjectMapper();
Person person = new Person();
person.setName("Jack");
person.setBirthday(new Date());
String json = mapper.writeValueAsString(person);
System.out.println(json);

输出结果如下:

{
    "name": "Jack",
    "birthday": "2022-08-01"
}

注意,日期的时分秒被忽略了。

示例二:格式化LocalDateTime类型数据

假设我们有一个类如下:

public class Order {
    private Integer id;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createTime;
    // getter、setter 略
}

其中,createTime 字段使用了 @JsonFormat 注解,指定了日期时间格式为 yyyy-MM-dd HH:mm:ss,时区为 GMT+8

下面是反序列化示例,将 JSON 格式的字符串转化为 Java 对象:

ObjectMapper mapper = new ObjectMapper();
String json = "{\"id\":1,\"createTime\":\"2022-08-01 10:20:30\"}";
Order order = mapper.readValue(json, Order.class);
System.out.println(order);

输出结果如下:

Order{id=1, createTime=2022-08-01T10:20:30}

需要注意的是,在反序列化时,Java 对象中的 createTime 字段被解析为 LocalDateTime 类型,而不是 String 类型。

总结

@JsonFormat 注解是 Jackson 提供的日期格式化注解,可以方便地序列化和反序列化日期类型的数据。在使用时需要注意注解的语法格式和参数的含义。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中注解@JsonFormat的用法详解 - Python技术站

(2)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • 必须了解的高阶JAVA枚举特性!

    必须了解的高阶JAVA枚举特性! 一、枚举简介 Java枚举是一种特殊的类,它定义了一个有限数目的常量,且这些常量都是类似于静态变量的东西,即它们在程序运行时是不可更改的。枚举最常用的特性是它可以帮助我们简化代码,并且增加程序的可读性。 二、JAVA基本枚举特性 1. 定义一个枚举 Java中使用关键字enum来定义一个枚举。 enum Color { RE…

    Java 2023年5月26日
    00
  • php使用curl模拟登录后采集页面的例子

    下面是php使用curl模拟登录后采集页面的攻略。 1. 了解curl模拟登录的基本原理 在使用curl模拟登录之前,需要了解一下基本的原理。curl是一个命令行工具,能够通过HTTP或FTP发送请求并获取资源,同时也可以通过数据请求来模拟登录网站。 登录页面的基本原理是通过向服务器发送用户名和密码进行验证,然后在浏览器中直接跳转到用户主页。使用curl模拟…

    Java 2023年6月15日
    00
  • 送电子书福利啦!

    过去若干年,一边工作编程,一边思考提炼,写了一些关于“写整洁业务代码”的文章,在随笔分类“代码修行”下。有一天在公司文档空间分享时,突然想到:可以制作一本电子书,将过往的重要经验总结起来,也是对自己十年编程生涯的一个阶段性回顾,作为继续前进的阶梯。 我的第一本电子书 书名:《代码修行:一步一步写出整洁的业务代码》 链接: https://pan.baidu.…

    Java 2023年5月7日
    00
  • java实现代码统计小程序

    首先,为了实现一个Java代码统计小程序,我们需要掌握以下几个方面的知识: Java I/O 操作:Java I/O 操作可以让我们读取和写入文件内容,包括字符流和字节流两种方式。 Java 正则表达式:正则表达式可以帮助我们识别代码中的各种语句和注释,便于代码统计。 Java 集合框架:Java 集合框架中的 List、Set 等集合类型可以帮助我们存储和…

    Java 2023年5月23日
    00
  • Java中的javaBean、vo、entity、domain和pojo

    下面是关于Java中的javaBean、vo、entity、domain和pojo的详细讲解: 1. 什么是JavaBean JavaBean是一种表示普通Java对象的标准规范,是一种特定的Java类,用于存储数据和访问数据等操作。JavaBean通常包含默认构造函数、私有属性、公共set和get方法等。 JavaBean通常用于表示与业务相关的对象,如用…

    Java 2023年5月20日
    00
  • 使用@Autowired注解引入server服务层方法时报错的解决

    针对使用@Autowired注解引入server服务层方法时报错的解决方案,我将提供以下攻略: 1. 问题描述 使用@Autowired注解引入server服务层方法时,你可能会遇到以下报错信息之一: 1) The dependencies of some of the beans in the application context form a cycl…

    Java 2023年6月15日
    00
  • 组织树查询-Jvava实现(递归)

    1.首先查询出组织机构 就是一个简单的查询 List<Dept> deptList = mapper.getDeptList(); Map<Long, OrgNode> nodeMap = new HashMap<>(); List<Long> rootIds = new ArrayList<>()…

    Java 2023年4月19日
    00
  • Windows安装Maven并配置环境的详细步骤

    下面是“Windows安装Maven并配置环境的详细步骤”的完整攻略: 1.下载并安装Maven 1.1 打开Maven官网(https://maven.apache.org/),找到Download页面,下载最新的release版。 1.2 将下载的压缩包解压至指定的目录,如:C:\Program Files\Apache\maven。 2.配置环境变量 …

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部