Date类型去除时分秒时,JsonFormat注解失效
时间: 2024-08-16 12:06:06 浏览: 138
当在Java中使用Jackson库进行JSON序列化和反序列化时,如果你尝试通过`@JsonFormat(pattern = "yyyy-MM-dd")`注解将`Date`类型的值转换为只包含日期的字符串,而忽略了时间部分,这个注解通常不会起作用,因为`Date`本身就是一个包含了日期和时间的完整对象。
默认情况下,Jackson会对`Date`字段按照ISO-8601格式进行序列化,这包括时间部分。如果你希望得到只包含日期的JSON格式,你应该使用`LocalDate`或者自定义`ObjectMapper`配置,以便在序列化阶段过滤掉时间部分,比如:
```java
ObjectMapper mapper = new ObjectMapper();
mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));
String json = mapper.writeValueAsString(dateWithoutTime);
```
或者
```java
mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.NONE);
mapper.enable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); // 将日期序列化为时间戳
json = mapper.writeValueAsString(dateWithoutTime);
```
然而,如果你仍然想让`@JsonFormat`生效,你需要使用其他的日期模型,如`java.time.LocalDateTime`或`java.time.ZonedDateTime`,它们允许你更精确地控制输出格式。
阅读全文