@DateTimeFormat和@JsonFormat的区别和使用场景

一、区别

@DateTimeFormat 用于前端给后端传参时

@JsonFormat 用于后端给前端返回时

二、使用场景
2、1 @JsonFormat的场景

1、**(错误写法) **如果参数是实体类,不可以使用@DateTimeFormat,这种写法前端传参序列化会报错,

这是因为 @RequestBody 通常与 HttpMessageConverter(例如 MappingJackson2HttpMessageConverter)一起工作,它使用 Jackson 库来序列化和反序列化 JSON 数据。Jackson 支持 @JsonFormat 注解来进行日期时间的格式化,而不是 @DateTimeFormat。


(正确写法)

2、2 @DateTimeFormat的场景

如果你使用 @DateTimeFormat,它是由 Spring MVC 的数据绑定机制支持的,适用于处理表单数据或查询参数,而不是 JSON 数据。

最后(还是建议全局处理)

os: 你真该死啊,有这不放最上面,我看半天前面的,你切记,都多余了嗷!!!!

java 复制代码
    final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

    /**
     * 格式化Long类型返回前端,精度丢失问题
     * 格式化datetime返回时间格式问题
     */
    @Bean
    public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
        return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder
                .serializerByType(Long.class, ToStringSerializer.instance)
                .serializerByType(Long.TYPE, ToStringSerializer.instance)
                .serializerByType(LocalDateTime.class, new LocalDateTimeSerializer(formatter))
                .deserializerByType(LocalDateTime.class, new LocalDateTimeDeserializer(formatter));
    }
相关推荐
工业甲酰苯胺15 小时前
实现 json path 来评估函数式解析器的损耗
java·前端·json
老前端的功夫15 小时前
Web应用的永生之术:PWA落地与实践深度指南
java·开发语言·前端·javascript·css·node.js
@forever@15 小时前
【JAVA】LinkedList与链表
java·python·链表
LilySesy15 小时前
ABAP+WHERE字段长度不一致报错解决
java·前端·javascript·bug·sap·abap·alv
六件套是我15 小时前
redission实现延时队列
android·java·servlet
王元_SmallA16 小时前
Redis Desktop Manager(Redis可视化工具)安装
java·后端
ᐇ95916 小时前
Java HashMap深度解析:数据结构、原理与实战指南
java·开发语言·数据结构
好好研究16 小时前
Spring框架 - 开发方式
java·后端·spring
武子康16 小时前
Java-166 Neo4j 安装与最小闭环 | 10 分钟跑通 + 远程访问 Docker neo4j.conf
java·数据库·sql·docker·系统架构·nosql·neo4j
2301_7965125217 小时前
Rust编程学习 - 为什么说Cow 代表的是Copy-On-Write, 即“写时复制技术”,它是一种高效的 资源管理手段
java·学习·rust