java - Jackson objectMapper,尝试将 LocalDate 序列化为 "yyyy-MM-dd",将 LocalTime 序列化为 "HH:mm:ss"

标签 java jackson

所以我有一个像这样的对象

    @EqualsAndHashCode
@Builder
@NoArgsConstructor
@Getter
@Setter
@AllArgsConstructor
public class CreateBookingDto implements Serializable {
    @JsonFormat(pattern="yyyy-MM-dd")
    private LocalDate date;
    @JsonFormat(pattern="HH:mm:ss")
    private LocalTime startTime;
}

我试图将它映射到一个字符串,我得到一个像这样的字符串

"{
"date":
{"year":2021,"month":"JANUARY","dayOfWeek":"SATURDAY","era":"CE","chronology":{"id":"ISO","calendarType":"iso8601"},"dayOfYear":16,"leapYear":false,"monthValue":1,"dayOfMonth":16},
"startTime":
{"hour":16,"minute":33,"second":13,"nano":721065000}}"

如何将它们映射到格式为“yyyy-mm-dd”的日期和“HH:mm:ss”的时间的字符串

我如何映射对象

def objectMapper = new ObjectMapper()
def requestBodyJson = new ObjectMapper().writeValueAsString(dtoObject)

我的pom

        <dependency>
        <groupId>com.fasterxml.jackson</groupId>
        <artifactId>jackson-bom</artifactId>
        <version>2.12.1</version>
        <type>pom</type>
    </dependency>

最佳答案

您需要注册JavaTimeModule到您的ObjectMapper。 这将安装一堆 JSON 序列化器/反序列化器 java.time 包的类。
(顺便说一句:在第 2 行中,使用第 1 行中的 ObjectMapper, 而不是创建一个新的。)

def ObjectMapper objectMapper = new ObjectMapper().registerModule(new JavaTimeModule())
def requestBodyJson = objectMapper.writeValueAsString(dtoObject)

那么 JSON 输出将是这样的:

{"date":"2021-01-17","startTime":"22:59:15"}

关于java - Jackson objectMapper,尝试将 LocalDate 序列化为 "yyyy-MM-dd",将 LocalTime 序列化为 "HH:mm:ss",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65751960/

相关文章:

java - 我无法从 C++ 程序运行可执行 jar

java - com.fasterxml.jackson.databind.JsonMappingException : No content to map due to end-of-input

java - 如何@autowire 一些 bean 进入 JsonSerializer?

java - Jackson库的ANDROID使用: How to load object with indexes - range from to

java - 即使抛出 NullPointerException 后,Spring Batch 指数重试也不会启动

java - 如何用很少的属性绑定(bind)@Value?

java - 无法使用 Spring social 获取 linkedin 个人资料摘要

java - 如何让 Jackson mixin 处理包含的类型?

java - Jackson ObjectMapper 在 try catch 中无法访问

java - 如何从 opensaml 2.6 迁移到 3.1.1