如何在 Spring Boot 应用程序中通过 Jackson 完成日期映射

问题描述 投票:0回答:1

在 Spring Boot Rest 控制器中,日期字段是如何映射的。假设我们发送 json {"receivedDate":"2024-05-15","num1":5} 它将如何映射到具有属性 private Date receiveDate; 的 Java 对象中的字段(假设java.util.Date)

我们可以考虑,一个简单的类

public class SampleClass {
        Integer num1;
        Date receivedDate;
        //getters and setters
    }

以及 Spring Boot 应用程序中的 Rest 控制器,

public ResponseEntity getDetails(@RequestBody SampleClass sampleClass) {
     try {
        System.out.println("Execution of getDetails started. received date is: "+sampleClass.getReceivedDate());
...............}
....
}

我在控制台中得到的结果为(我在美国标准时间上午 10:20 执行了此 api):

Execution of getDetails started. received date is: Thu May 16 05:30:00 IST 2024

所以,结果包含 05:30:00 而不是我现在的时间。如果我希望它只是 00:00:00.0 而不是 05:30:00.0,该怎么办? 我很困惑,因为在一些 stackoverflow 答案中,我了解到 Jackson 的默认行为是按照 UTC 进行。但它是按照 IST 进行的,尽管我没有完成配置。

java spring-boot jackson
1个回答
0
投票

您只想接收年、月、日,时、分、秒的默认值为 00:00:00。您可以使用@JsonFormat注释:

public class SampleClass {
    Integer num1;
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
    Date receivedDate;
}

这会将输出中的默认时间设置为 00:00:00

Execution of getDetails started. received date is: Wed May 15 00:00:00 CST 2024
© www.soinside.com 2019 - 2024. All rights reserved.