You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中Joda DateTime序列化为POJO的实现需求

解决Spring Boot中Joda DateTime序列化为POJO格式的问题

要将org.joda.time.DateTime字段序列化为你期望的POJO格式,而非默认的时间戳,可通过以下两种方式实现:

方案一:全局配置Jackson(推荐)

通过自定义Jackson配置,全局修改DateTime的序列化行为,无需在每个DTO字段上单独注解:

  1. 创建Jackson配置类:
import com.fasterxml.jackson.databind.SerializationFeature;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class JacksonDateTimeConfig {

    @Bean
    public Jackson2ObjectMapperBuilderCustomizer jacksonDateTimeCustomizer() {
        return builder -> {
            // 禁用Joda时间戳序列化的默认行为
            builder.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
        };
    }
}

原理:Jackson的JodaModule默认开启WRITE_DATES_AS_TIMESTAMPS特性,禁用后Jackson会自动将DateTime作为普通POJO序列化,遍历其所有getter方法生成对应字段,完全匹配你期望的输出格式。

方案二:字段级注解配置

如果只需针对特定DTO字段修改序列化行为,可在字段上添加@JsonSerialize注解:

import com.fasterxml.jackson.databind.ser.BeanSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import org.joda.time.DateTime;

public class YourDTO {

    @JsonSerialize(using = BeanSerializer.class)
    private DateTime thisDate;

    // 生成getter、setter方法
}

依赖确认

确保项目中包含Jackson的Joda扩展依赖,Spring Boot的spring-boot-starter-web已默认引入,无需额外添加。若手动管理依赖,需添加:

Maven

<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-joda</artifactId>
</dependency>

Gradle

implementation 'com.fasterxml.jackson.datatype:jackson-datatype-joda'

内容的提问来源于stack exchange,提问作者Diego Cairone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 19:55:17