如何使用 Jackson 启用 JSR310 对 LocalDate 的支持?

nou*_*nal 17 java jackson localdate

我已将 JS310 依赖项添加到 Maven 并刷新依赖项:

<dependency>
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-jsr310</artifactId>
            <version>2.13.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

在域中:

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
LocalDate start;
Run Code Online (Sandbox Code Playgroud)

但是,我收到此错误:

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

dar*_*ily 35

该错误是指示性的,并解释您尚未注册JavaTimeModule模块,如记录在datetime:要注册它,您可以通过这种方式(或我之前添加的链接中解释的其他等效方式,取决于您正在使用的杰克逊库版本) ):

ObjectMapper mapper = JsonMapper.builder()
    .addModule(new JavaTimeModule())
    .build();
Run Code Online (Sandbox Code Playgroud)

  • @noumenal 如果您使用 2.9 之前的 2.x 版本,则代码为 `ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(new JavaTimeModule());`,链接中存在两种具有等效替代方法的方法。我看到你正在使用2.13模块,检查这是否是你当前使用的版本,因为这些是官方文档中的方法。 (4认同)
  • @MetaCoder 对于 spring boot,有一个特定的 [`spring-boot-starter-json`](https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-json) json 启动器,其中包括`杰克逊数据类型-jsr310`。 (3认同)