百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

如何统一处理 Spring Boot Web 请求的 JSON 日期格式

ztj100 2025-05-14 18:28 2 浏览 0 评论

导语:在 Web 应用开发中,统一的日期格式对于数据的正确传输和解析至关重要。Spring Boot 提供了多种方法来统一处理 JSON 日期格式,保证前后端的数据一致性。本文将介绍两种处理 JSON 日期格式的方法:编程式声明和配置式声明。


方式一:编程式声明

通过自定义配置类,在 Jackson 的自动配置之前预先装配一个
Jackson2ObjectMapperBuilderCustomizer,配置日期格式。

具体实现步骤

  1. 创建 JacksonConfig 配置类:
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
import org.springframework.boot.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.time.ZoneId;
import java.util.Locale;
import java.util.TimeZone;

@Configuration
@ConditionalOnClass(ObjectMapper.class)
@ConditionalOnProperty(name = "spring.jackson.custom-config", matchIfMissing = true)
@AutoConfigureBefore(JacksonAutoConfiguration.class)  // 本装配提前于官方的自动装配
public class JacksonConfig {

    @Bean
    public Jackson2ObjectMapperBuilderCustomizer jacksonCustomizer() {
        return builder -> {
            builder.locale(Locale.CHINA);
            builder.timeZone(TimeZone.getTimeZone(ZoneId.systemDefault()));
            builder.simpleDateFormat("yyyy-MM-dd HH:mm:ss");
        };
    }
}
  1. 说明:@ConditionalOnClass(ObjectMapper.class):确保在类路径中存在 ObjectMapper 时才应用此配置。@AutoConfigureBefore(JacksonAutoConfiguration.class):确保此配置在 Jackson 的自动配置之前生效。使用 Jackson2ObjectMapperBuilderCustomizer 自定义 JSON 日期格式。

方式二:配置式声明(推荐)

Spring Boot 提供了在 application.yml 或 application.properties 文件中配置 JSON 日期格式的方式,这种方式更为简洁和高效。

具体实现步骤

  1. 编辑 application.yml 文件:
spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    locale: zh_CN
    time-zone: "GMT+8"
  http:
    converters:
      preferred-json-mapper: jackson
  1. 说明:spring.jackson.date-format:指定日期格式。spring.jackson.locale:设置区域。spring.jackson.time-zone:设置时区。spring.http.converters.preferred-json-mapper:确保使用 Jackson 作为首选 JSON 转换器,否则配置可能不生效。

最佳实践

选择推荐方式

配置式声明相对更为简洁、直观,推荐作为首选解决方案。此外,可以将两种方法结合起来使用,为核心部分采用编程式声明配置,而将多变的、可能随项目需求调整的部分通过配置文件进行管理。

尽量减少重复配置

避免在代码和配置文件中同时定义日期格式,统一使用一种配置方式,以减少维护成本和潜在的冲突。

小结

通过以上两种方法,你可以轻松地统一处理 Spring Boot Web 请求中的 JSON 日期格式,保证前后端数据的一致性。无论是选择编程式声明还是配置式声明,都可以灵活应对你在开发中遇到的各种需求。


结语:统一处理 JSON 日期格式是高效开发中的重要一环。通过本文的讲解,相信你已经掌握了两种常用的处理方法。希望这些技巧能够帮助你在实际项目中更顺利地解决日期格式问题。关注今日头条,获取更多 Spring Boot 开发技巧和最佳实践!

相关推荐

Java项目宝塔搭建实战MES-Springboot开源MES智能制造系统源码

大家好啊,我是测评君,欢迎来到web测评。...

一个令人头秃的问题,Logback 日志级别设置竟然无效?

原文链接:https://mp.weixin.qq.com/s/EFvbFwetmXXA9ZGBGswUsQ原作者:小黑十一点半...

实战!SpringBoot + RabbitMQ死信队列实现超时关单

需求背景之为什么要有超时关单原因一:...

火了!阿里P8架构师编写堪称神级SpringBoot手册,GitHub星标99+

Springboot现在已成为企业面试中必备的知识点,以及企业应用的重要模块。今天小编给大家分享一份来着阿里P8架构师编写的...

Java本地搭建宝塔部署实战springboot仓库管理系统源码

大家好啊,我是测评君,欢迎来到web测评。...

工具尝鲜(1)-Fleet构建运行一个Springboot入门Web项目

Fleet是JetBrains公司推出的轻量级编辑器,对标VSCode。该款产品还在公测当中,具体下载链接如下JetBrainsFleet:由JetBrains打造的下一代IDE。想要尝试的...

SPRINGBOOT WEB 实现文件夹上传(保留目录结构)

网上搜到的SpringBoot的代码不多,完整的不多,能用的也不多,基本上大部分的文章只是提供了少量的代码,讲一下思路,或者实现方案。之前一般的做法都是使用HTML5来做的,大部都是传文件的,传文件夹...

Java项目本地部署宝塔搭建实战报修小程序springboot版系统源码

大家好啊,我是测评君,欢迎来到web测评。...

新年IT界大笑料“工行取得基于SpringBoot的web系统后端实现专利

先看看专利描述...

看完SpringBoot源码后,整个人都精神了

前言当读完SpringBoot源码后,被Spring的设计者们折服,Spring系列中没有几行代码是我们看不懂的,而是难在理解设计思路,阅读Spring、SpringMVC、SpringBoot需要花...

阿里大牛再爆神著:SpringBoot+Cloud微服务手册

今天给大家分享的这份“Springboot+Springcloud微服务开发实战手册”共有以下三大特点...

WebClient是什么?SpringBoot中如何使用WebClient?

WebClient是什么?WebClient是SpringFramework5引入的一个非阻塞、响应式的Web客户端库。它提供了一种简单而强大的方式来进行HTTP请求,并处理来自服务器的响应。与传...

SpringBoot系列——基于mui的H5套壳APP开发web框架

  前言  大致原理:创建一个main主页面,只有主页面有头部、尾部,中间内容嵌入iframe内容子页面,如果在当前页面进行跳转操作,也是在iframe中进行跳转,而如果点击尾部按钮切换模块、页面,那...

在Spring Boot中使用 jose4j 实现 JSON Web Token (JWT)

JSONWebToken或JWT作为服务之间安全通信的一种方式而闻名。...

Spring Boot使用AOP方式实现统一的Web请求日志记录?

AOP简介AOP(AspectOrientedProgramming),面相切面编程,是通过代码预编译与运行时动态代理的方式来实现程序的统一功能维护的方案。AOP作为Spring框架的核心内容,通...

取消回复欢迎 发表评论: