ObjectMapper 知道format yyyy-MM-dd'T'HH:mm:ss.SSS
时间: 2025-07-05 18:09:19 浏览: 15
`ObjectMapper` 默认支持 `yyyy-MM-dd'T'HH:mm:ss.SSS` 格式的日期字符串,因为它使用的 `StdDateFormat` 实现类能够兼容 ISO 8601 标准格式。ISO 8601 格式包括类似 `2023-10-05T14:30:00.000` 的表示方式,因此可以直接被 Jackson 解析而无需额外配置[^1]。
如果实体类中的字段类型为 `LocalDateTime`,Jackson 默认会使用 ISO 8601 格式进行序列化和反序列化操作。这意味着对于格式为 `yyyy-MM-dd'T'HH:mm:ss.SSS` 的输入字符串,Jackson 可以正常解析并映射到 `LocalDateTime` 类型的字段上,前提是未对 `ObjectMapper` 做特殊定制修改[^2]。
### 自定义日期格式以确保兼容性
尽管默认情况下支持 ISO 8601 格式,但为了增强系统的健壮性和兼容性,仍然可以显式地配置 `ObjectMapper` 来支持特定的日期时间格式。例如,在 Spring Boot 应用中可以通过自定义 `Jackson2ObjectMapperBuilderCustomizer` 来设置日期解析格式:
```java
@Bean
public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
return builder -> {
builder.simpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
builder.timeZone(TimeZone.getDefault());
};
}
```
此外,也可以通过直接注册一个 `JavaTimeModule` 并自定义 `DateTimeFormatter` 来实现更细粒度的控制:
```java
ObjectMapper objectMapper = new ObjectMapper();
JavaTimeModule module = new JavaTimeModule();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS");
module.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(formatter));
objectMapper.registerModule(module);
```
### 使用注解指定字段格式
如果希望仅针对某个字段应用特定的日期格式,可以在实体类字段上使用 `@JsonFormat` 注解来指定格式:
```java
@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS")
private LocalDateTime dateTime;
```
这种方式适用于需要在不同字段上应用不同日期格式的场景,并且不会影响全局的 `ObjectMapper` 配置。
---
阅读全文
相关推荐


















