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

如何在Micronaut中配置Jackson输出yyyy-MM-dd'T'HH:mm:ss.SSSZ格式日期?

在Micronaut中配置Jackson输出指定日期格式

你已经通过@JacksonFeatures禁用了将日期序列化为时间戳的功能,这一步方向是对的,但还需要额外配置日期的具体格式yyyy-MM-dd'T'HH:mm:ss.SSSZ。下面提供几种实用的方案:

方案一:通过配置文件全局配置(推荐)

Micronaut支持直接在配置文件中配置Jackson的日期格式,这种方式无需修改代码,灵活度更高。

若使用application.yml:

jackson:
  date-format: "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
  serialization:
    write-dates-as-timestamps: false

若使用application.properties:

jackson.date-format=yyyy-MM-dd'T'HH:mm:ss.SSSZ
jackson.serialization.write-dates-as-timestamps=false

配置完成后,项目中所有日期类型(比如java.util.Date、java.time.LocalDateTime等)都会自动按照指定格式序列化。

方案二:通过代码自定义ObjectMapper配置

如果需要更精细化的控制,可以创建一个@Singleton Bean来定制ObjectMapper:

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import jakarta.inject.Singleton;
import java.time.format.DateTimeFormatter;

@Singleton
public class JacksonConfig {
    public ObjectMapper objectMapper() {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
        LocalDateTimeSerializer localDateTimeSerializer = new LocalDateTimeSerializer(formatter);

        return new ObjectMapper()
                .disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
                .registerModule(new JavaTimeModule().addSerializer(localDateTimeSerializer));
    }
}

注意:如果项目用到Java 8+的时间API(如LocalDateTime),需确保已引入jackson-datatype-jsr310依赖,Micronaut通常会自动引入,若未引入可手动在build.gradle或pom.xml中添加。

方案三:针对单个字段配置

如果仅需特定字段使用该格式,可在字段上添加@JsonFormat注解:

import com.fasterxml.jackson.annotation.JsonFormat;
import java.time.LocalDateTime;

public class YourEntity {
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ", shape = JsonFormat.Shape.STRING)
    private LocalDateTime createTime;

    // getter和setter方法
}

这种方式只会作用于标注的字段,其他日期字段不受影响。

另外,你之前使用的@JacksonFeatures注解可以和配置文件配合使用,但如果已经通过配置文件设置了write-dates-as-timestamps: false,就无需在注解中重复配置了。

内容的提问来源于stack exchange,提问作者Aleksey Kozel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:10:37