解决 Jackson 解析错误:Cannot deserialize value of type `java.time.LocalDateTime` from String … could not be parsed at index 10

10.7k 技术 , 一条评论

详细错误如下:

com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.time.LocalDateTime` from String "2020-08-11 11:00:00": Failed to deserialize java.time.LocalDateTime: (java.time.format.DateTimeParseException) Text '2020-08-11 11:00:00' could not be parsed at index 10

这是因为用了 JavaTimeModule() 作为 localDatelocalDateTime 的解析工具,但是对于日期和时间格式我们没有指定,所以会使用默认的格式,也就是:DateTimeFormatter.ISO_LOCAL_DATE_TIME,就是类似这样的:2011-12-03T10:15:30

假设我们自己用的格式是2020-08-11 11:00:00,就需要手动配置格式:

        JavaTimeModule javaTimeModule = new JavaTimeModule();
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(dateTimeFormatter));
        objectMapper.registerModule(javaTimeModule);
        objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);

参考资料:

1 条评论

c
chinesefood says: 回复

终于找到 Jackson 解析错误的解决方法了,非常感谢。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

昵称 *