【问题标题】:Using DateTimeFormatter with ObjectMapper将 DateTimeFormatter 与 ObjectMapper 一起使用
【发布时间】:2017-02-18 16:30:38
【问题描述】:

在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 上的上述设置。

如何使用 ObjectMapper 设置 DateTimeFormatter

【问题讨论】:

标签: java objectmapper


【解决方案1】:

您可以尝试以下方法:

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>

【讨论】:

    猜你喜欢
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 2019-11-09
    • 1970-01-01
    • 2021-08-13
    • 2022-01-20
    相关资源
    最近更新 更多