java 在ObjectMapper中使用DateTimeFormatter

ljsrvy3e  于 11个月前  发布在  Java
关注(0)|答案(1)|浏览(101)

在Java8之前,我们使用ObjectMapper设置DateFormat,如下所示

DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
ObjectMapper mapper = <SomeInstantiation>
mapper.setDateFormat(df);
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);

现在我们有了java.time.format.DateTimeFormatter,它是 * 线程安全 * 的,并且比SimpleDateFormat更健壮。我想在ObjectMapper上替换上述设置。
如何将DateTimeFormatter设置为ObjectMapper

vuktfyat

vuktfyat1#

您可以尝试以下操作:

DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME;

LocalDateTimeDeserializer dateTimeDeserializer = new LocalDateTimeDeserializer(formatter);
LocalDateTimeSerializer dateTimeSerializer = new LocalDateTimeSerializer(formatter);

JavaTimeModule javaTimeModule = new JavaTimeModule(); 
javaTimeModule.addDeserializer(LocalDateTime.class, dateTimeDeserializer);
javaTimeModule.addSerializer(LocalDateTime.class, dateTimeSerializer);

ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(javaTimeModule);

需要jackson-datatype-jsr310依赖项:

<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
    <version>2.8.2</version>
</dependency>

相关问题