我已经将 JS310 依赖添加到 Maven 中并刷新了依赖:
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.13.0</version>
</dependency>
在域中:
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
LocalDate start;
但是,我收到此错误:
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 date/time type java.time.LocalDate not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling
该错误是指示性的,并解释您尚未注册
JavaTimeModule
模块,如 datetime
中记录的那样:要注册它,您可以通过这种方式(或我之前添加的链接中解释的其他等效方式)进行注册,取决于您正在使用的杰克逊库版本):
ObjectMapper mapper = JsonMapper.builder()
.addModule(new JavaTimeModule())
.build();
java.time.LocalDate
,因此我们必须注册该模块。添加此行用于注册 -
DatabindCodec.mapper().registerModule(new JavaTimeModule());
终于我解决了这个问题:使用 @配置 公共类 JacksonConfig {
@Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());
return objectMapper;
}
} 并使用@Autowired 私有 ObjectMapper 对象映射器;
如果你创建ObjectMapper objectMapper=new ObjectMapper();在你的方法里面它不会工作。 还有一件事我使用了 springboot 项目,所以我不需要 jsr 310 依赖