java 我不能把今天的日期放在LocalDate变量中[重复]

hjzp0vay  于 2023-05-12  发布在  Java
关注(0)|答案(2)|浏览(197)

此问题已在此处有答案

How do I enable the JSR310 support for LocalDate using Jackson?(1个答案)
2天前关闭。
我尝试用LocalDate类型的属性填充名为Reservation的对象

private LocalDate dateReservation;

我想像这样填充Reservation类

ReservationDto reservationDto = new ReservationDto();

类Reservation和ReservationD具有相同的LocalDate库

import java.time.LocalDate;

为了加载预订日期,我尝试了以下几种方法:

log.info("Date : " + LocalDate.now());
    LocalDate str = LocalDate.of(2020, 8, 15);
    log.info("the date is " + str);
    
    reservationDto.setDateReservation(str);
    reservationDto.setDateReservation(LocalDate.of(2020, 8, 15));
    reservationDto.setDateReservation(LocalDate.now());

使用日志显示日期,但使用setReservationDate显示以下消息:

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 (through reference chain: fr.gopartner.locationvoiture.dto.ReservationDto["dateReservation"])

我使用JDK 11。我试着加上依赖关系:

<dependency>
        <groupId>com.fasterxml.jackson.module</groupId>
        <artifactId>jackson-module-parameter-names</artifactId>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-jdk8</artifactId>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-jsr310</artifactId>
    </dependency>

我尝试更改依赖项,加载Map器对象以序列化/反序列化我的ReservationDto对象,仍然显示InvalidDefinitionException上面的相同错误。请帮帮我我被卡住了

tzdcorbm

tzdcorbm1#

您需要配置JacksonObjectMapper以添加对JDK 8日期/时间类的支持。最简单的方法是这样的:

ObjectMapper mapper = new ObjectMapper()
        .registerModule(new JavaTimeModule());

根据您使用的Jackson版本,还有各种其他方法可以做到这一点,更多信息请参见Jackson Java 8 modules页面。

ajsxfq5m

ajsxfq5m2#

您需要通过添加以下代码来注册时间模块

ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());

相关问题