在开发Spring Boot应用时,很多时候需要在返回的JSON数据中以特定格式显示日期和时间。例如,使用LocalDateTimeDate等类型的字段时,默认的序列化格式可能不是你期望的路径。本文将介绍如何在Spring Boot中实现控制返回JSON数据的日期格式,主要围绕@JsonFormat进行讲解。


1. 为什么需要控制JSON中的日期格式?

默认情况下,Spring Boot(基于Jackson)会按照Jackson的默认配置将日期字段序列化成类似"yyyy-MM-dd'T'HH:mm:ss"的格式。这在某些场景下可能不符合业务要求,或者在前端展示时需要特定的格式。

示例:

{"name": "张三","createTime": "2025-06-17T15:20:30"
}

如果你希望日期显示为"yyyy-MM-dd HH:mm:ss"形式,比如"2025-06-17 15:20:30",那么就需要自定义格式。


2. 方案一:在字段上使用@JsonFormat

这是最常用的做法。只需要在日期字段上添加注解,指定格式:

public class User {private String name;@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")private LocalDateTime createTime;// getters and setters
}

效果:

{"name": "张三","createTime": "2025-06-17 15:20:30"
}

3. 方案二:全局配置ObjectMapper

如果项目中大量日期字段都要统一格式,建议配置全局的ObjectMapper

示例:

@Configuration
public class JacksonConfig {@Beanpublic ObjectMapper objectMapper() {ObjectMapper mapper = new ObjectMapper();// 设置全局日期格式mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));return mapper;}
}

这会影响整个应用的所有日期序列化行为。


4. 什么时候用@JsonFormat,什么时候用@DateTimeFormat

场景使用的注解作用范围
请求参数绑定(例如:请求中日期字符串转换为Java对象的字段)@DateTimeFormat控制请求参数到Java对象的绑定规则
JSON序列化/反序列化(返回响应的JSON格式控制)@JsonFormat控制序列化输出的日期格式

总结:返回JSON数据时,主要用@JsonFormat


5. 具体示例:完整的控制器和实体类

import com.fasterxml.jackson.annotation.JsonFormat;public class User {private String name;@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")private LocalDateTime createTime;// constructors, getters, setters
}
@RestController
public class UserController {@GetMapping("/user")public User getUser() {User user = new User();user.setName("张三");user.setCreateTime(LocalDateTime.now());return user; // 返回的JSON时间会按照@JsonFormat指定的格式输出}
}

6. 结语

在Spring Boot中控制返回JSON的日期格式,使用@JsonFormat是最直接、最常用的方法。结合全局配置或者字段配置,可以满足大部分业务需求。

如果你的应用还需要更复杂的日期格式化策略,比如地域性、时区等,也可以在@JsonFormat中加入timezone参数,例如:

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")

7. 提示

  • 不建议只依赖@DateTimeFormat来控制JSON输出,它只对请求参数绑定起作用。
  • 全局配置应慎用,避免不同模块的格式不一致。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/84520.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/84520.shtml
英文地址,请注明出处:http://en.pswp.cn/web/84520.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【大数据高并发核心场景实战】 - 数据持久化之冷热分离

大数据高并发核心场景实战 - 数据持久化之冷热分离 当云计算平台的业务后台处理工单突然接入客服系统的请求洪流,每日新增10万工单,3000万主表1.5亿明细表的数据库开始呻吟——是时候请出「冷热分离」这剂退烧药了! 一、业务场景:…

【AI Study】第四天,Pandas(6)- 性能优化

文章概要 本文详细介绍 Pandas 的性能优化技术,包括: 内存优化计算优化大数据处理实际应用示例 内存优化 数据类型优化 # 查看数据类型 df.dtypes# 查看内存使用情况 df.memory_usage(deepTrue)# 优化数值类型 # 将 float64 转换为 float32 df[floa…

c++系列之智能指针的使用

💗 💗 博客:小怡同学 💗 💗 个人简介:编程小萌新 💗 💗 如果博客对大家有用的话,请点赞关注再收藏 🌞 智能指针的使用及原理 AII(Resource Acquisition Is Initializatio…

知识蒸馏(Knowledge Distillation, KD)

知识蒸馏(Knowledge Distillation, KD)是一种模型压缩与知识迁移技术,通过让小型学生模型(Student)模仿大型教师模型(Teacher)的行为(如输出概率分布或中间特征表示)&…

chatGPT 会扩大失业潮吗?

击上方关注 “终端研发部” 设为“星标”,和你一起掌握更多数据库知识 对于部分人而言,失业是必然趋势。 这不,身后的一测试大哥,自从公司解散之后,已经在家待业半年了。。。 自打OpenAI推出了chatGPT3.0之后&#xff…

FPGA基础 -- Verilog行为级建模之时序控制

Verilog 行为级建模(Behavioral Modeling)中“时序控制”机制的系统化由浅入深培训内容,适用于初学者到进阶 FPGA 设计工程师的学习路径。 🎯 一、行为级建模的定位 行为级建模(Behavioral Modeling)是 Ve…

设计模式精讲 Day 7:桥接模式(Bridge Pattern)

【设计模式精讲 Day 7】桥接模式(Bridge Pattern) 文章简述 在软件系统中,类的继承关系往往会导致类爆炸,尤其是在需要组合多种功能或行为时。桥接模式(Bridge Pattern)通过将抽象部分与其实现部分分离&am…

Apipost 签约锐捷网络:AI赋能,共推 ICT 领域 API 生态智能化升级

日前,北京北极狐信息科技有限公司(简称 “北极狐科技”)与锐捷网络股份有限公司(简称 “锐捷网络”)正式签署合作协议,双方将聚焦 ICT 基础设施及解决方案领域,围绕 API 全链路管理与智能化研发…

RK3568笔记八十三:RTMP推流H264和PCM

若该文为原创文章,转载请注明原文出处。 前面有通过勇哥,实现了RTMP推流,但一直想加上音频,所以经过测试,写了一个demo, ffmpeg是使用ubuntu下安装测试的。 安装参考:Ubuntu20.4下x264、x265、fdk-aac和FFmpeg4.3源码编译安装_ubuntu安装libx264-CSDN博客 记录:实现从…

产业园智慧化升级中 DDC 楼宇自控系统的集成应用优势:多业态协同与能源可视化管控​

摘要​ 在产业园智慧化升级浪潮中,直接数字控制(DDC)系统凭借强大的集成能力,成为实现多业态协同与能源可视化管控的核心技术。本文深入剖析 DDC 系统在整合园区多元业态、优化能源管理方面的独特优势,通过系统集成打…

Vue 3瀑布流组件实现详解 - 图片展示方案

引言:瀑布流布局的魅力与应用场景 在当今富媒体内容主导的网络环境中,瀑布流布局已成为展示图片商品等内容的流行方式。它通过动态布局算法在有限空间内最大化内容展示,提供视觉连续性和流畅浏览体验。本文将深入探讨如何使用Vue 3实现一个功…

如何确保邮件内容符合反垃圾邮件规范?

一、遵守相关法规 美国《CAN-SPAM法案》规定,邮件头信息必须真实准确,要标明广告性质、提供有效地址,并在 10 个工作日内响应退订请求。 欧盟《通用数据保护条例》(GDPR)强调获得用户明确同意,数据使用要…

MQ解决高并发下订单问题,实现流量削峰

文章目录 示例:电商秒杀系统中的流量削峰1. 依赖引入(Maven)2. 消息队列配置(RabbitMQ)3. 生产者:订单服务(接收高并发请求)4. 消费者:库存服务(按系统容量处…

【二进制安全作业】250616课上作业2 - 栈溢出漏洞利用

文章目录 前言一、使用环境二、程序源码1. C语言源码2. 编译方式 三、源码分析四、反汇编分析1. 检查文件安全性2. 查找目标函数3. 计算偏移量4. 绕过 strlen5. 绕过 if 五、编写EXP结语 前言 直接进入正题 一、使用环境 处理器架构:x86_64 操作系统:U…

Python类型处理与推导式

欢迎来到啾啾的博客🐱。 记录学习点滴。分享工作思考和实用技巧,偶尔也分享一些杂谈💬。 有很多很多不足的地方,欢迎评论交流,感谢您的阅读和评论😄。 目录 1 引言2 类型处理3 高效操作AI开发常见数据结构3…

数据库char字段做trim之后查询很慢的解决方式

select * from TABLE0 where trim(column1):param 当表数据量大时,即使给column1字段加上索引,这条查询语句也会很慢。 因为使用trim函数后,column1的索引会失效,有两种处理方法: 1.给表加上trim(column1)函数索引 …

Kafka核心架构解析:从CAP理论到消息可靠性的设计哲学

摘要 本文从分布式系统CAP理论和消息可靠性两个视角深入解析Kafka的架构设计,通过概念关系图和组件交互图揭示其核心设计思想,并详细拆解各组件功能与协作机制。文章包含完整的交互流程分析和配置参数说明,是理解Kafka设计精髓的实用指南。 一…

LeetCode 275.H指数 II

题目: 给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数,citations 已经按照 非降序排列 。计算并返回该研究者的 h 指数。 h 指数的定义:h 代表“高引用次数”(high citations&…

OV汽车摄像头cmos sensor 相关情况介绍

OV汽车摄像头cmos sensor 相关情况介绍 文章目录 OV汽车摄像头cmos sensor 相关情况介绍**1. 汽车摄像头三大场景应用****2. 车载CMOS SENSOR的核心技术****3. 两大车规认证:实现真正的车规可靠性****4. 最新产品**2022年,汽车智能化加码提速,被誉为“智能驾驶之眼”的车载摄…