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技术站