Spring Boot 中解析 LocalDateTime 失败:'2023-08-30 11:29:59' 无法解析
这个错误是因为在将 JSON 字符串转换为 Java 对象时,无法将字符串类型的日期时间转换为 LocalDateTime 类型。在错误消息中提到了具体的转换失败的日期时间字符串是'2023-08-30 11:29:59'。
要解决这个问题,你可以尝试以下几种方法:
-
确保日期时间字符串的格式符合 LocalDateTime 的要求。LocalDateTime 的默认格式是'yyyy-MM-ddTHH:mm:ss',所以你的日期时间字符串应该是'2023-08-30T11:29:59'。你可以尝试修改发送请求的代码,以确保日期时间字符串的格式正确。
-
如果你无法修改发送请求的代码或者日期时间字符串的格式,你可以自定义一个日期时间格式化器,用于将字符串转换为 LocalDateTime 对象。你可以使用
@JsonFormat注解来指定日期时间的格式,然后在对应的字段上使用该注解。例如:
import com.fasterxml.jackson.annotation.JsonFormat;
import java.time.LocalDateTime;
public class CoursePublish {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createDate;
// 其他字段和方法
}
这样,当使用 Jackson 进行 JSON 转换时,它将使用指定的格式来解析日期时间字符串。
- 如果你使用的是 Spring Boot 和 Spring MVC,你还可以尝试在配置类中注册一个全局的日期时间格式化器。你可以创建一个继承自
WebMvcConfigurer接口的配置类,并重写addFormatters方法,在该方法中注册日期时间格式化器。例如:
import org.springframework.context.annotation.Configuration;
import org.springframework.format.FormatterRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.time.format.DateTimeFormatter;
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addFormatter(new LocalDateTimeFormatter());
}
}
class LocalDateTimeFormatter extends org.springframework.format.datetime.standard.DateTimeFormatterRegistrar {
public LocalDateTimeFormatter() {
setDateTimeFormatter(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
}
}
这样,当 Spring MVC 接收到日期时间字符串时,它将使用你指定的格式来解析,并将其转换为 LocalDateTime 对象。
希望以上解决方法能帮到你解决这个问题。
原文地址: https://www.cveoy.top/t/topic/qDap 著作权归作者所有。请勿转载和采集!