@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));
    }
相关推荐
爱尚你19932 分钟前
Java 泛型与类型擦除:为什么解析对象时能保留泛型信息?
java
电商数据girl25 分钟前
酒店旅游类数据采集API接口之携程数据获取地方美食品列表 获取地方美餐馆列表 景点评论
java·大数据·开发语言·python·json·旅游
CircleMouse26 分钟前
基于 RedisTemplate 的分页缓存设计
java·开发语言·后端·spring·缓存
ktkiko1132 分钟前
顶层架构 - 消息集群推送方案
java·开发语言·架构
zybsjn37 分钟前
后端系统做国际化改造,生成多语言包
java·python·c#
Unity官方开发者社区1 小时前
《Cryptical Path》开发诀窍:像玩游戏一样开发一款类Rogue游戏
java·游戏·玩游戏
_星辰大海乀1 小时前
表的设计、聚合函数
java·数据结构·数据库·sql·mysql·数据库开发
IT成长史1 小时前
deepseek梳理java高级开发工程师微服务面试题-进阶版
java·spring cloud·微服务
zkmall2 小时前
Java + 鸿蒙双引擎:ZKmall开源商城如何定义下一代B2C商城技术标准?
java·开源·harmonyos
陌路物是人非2 小时前
uniapp取消浏览自动填充
java·服务器·uni-app