接口返回的时间格式五花八门,统一全局序列化配置

最省事的是改配置文件,全局生效,不用逐个字段加注解。

spring.jackson.date-format 定格式,time-zone 定时区。

注意 LocalDateTime 不吃这个配置,要另注册序列化模块。

时间戳和 Date 建议统一成 ISO-8601,前后端都不用再猜时区。

# application.yml:全局统一,无需逐字段加 @JsonFormat
spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
    serialization:
      write-dates-as-timestamps: false   # 输出字符串而不是时间戳

// LocalDateTime 不受 date-format 影响,用定制器注册 JavaTimeModule
@Bean
public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer() {
    return b -> {
        b.simpleDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
        b.serializers(new LocalDateTimeSerializer(
            DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
        b.serializers(new LocalDateSerializer(DateTimeFormatter.ISO_LOCAL_DATE));
    };
}

# 个别字段要特殊格式时再局部覆盖
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private LocalDate birthDate;
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容