@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));
    }
相关推荐
时艰.21 小时前
JVM 垃圾收集器(G1&ZGC)
java·jvm·算法
iRuriCatt21 小时前
智慧景区管理系统 | 计算机毕设项目
java·前端·spring boot·vue·毕设
天空属于哈夫克321 小时前
企业微信外部群运营升级:API 主动推送消息开发实战
java·数据库·mysql
qq_12498707531 天前
基于springboot的会议室预订系统设计与实现(源码+论文+部署+安装)
java·vue.js·spring boot·后端·信息可视化·毕业设计·计算机毕业设计
愿你天黑有灯下雨有伞1 天前
java动态渲染列导出以及分页列表
java
星火开发设计1 天前
共用体 union:节省内存的特殊数据类型
java·开发语言·数据库·c++·算法·内存
2301_803554521 天前
阻塞,非阻塞,同步,异步以及linux上的5种IO模型阻塞,非阻塞,信号驱动,异步,IO复用
java·服务器·网络
仰望星空_Star1 天前
Java证书操作
java·开发语言
河北小博博1 天前
分布式系统稳定性基石:熔断与限流的深度解析(附Python实战)
java·开发语言·python
岳轩子1 天前
JVM Java 类加载机制与 ClassLoader 核心知识全总结 第二节
java·开发语言·jvm