@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));
    }
相关推荐
Yvemil722 分钟前
《开启微服务之旅:Spring Boot 从入门到实践》(三)
java
Anna。。24 分钟前
Java入门2-idea 第五章:IO流(java.io包中)
java·开发语言·intellij-idea
.生产的驴1 小时前
SpringBoot 对接第三方登录 手机号登录 手机号验证 微信小程序登录 结合Redis SaToken
java·spring boot·redis·后端·缓存·微信小程序·maven
爱上语文1 小时前
宠物管理系统:Dao层
java·开发语言·宠物
王ASC1 小时前
SpringMVC的URL组成,以及URI中对/斜杠的处理,解决IllegalStateException: Ambiguous mapping
java·mvc·springboot·web
是小崔啊1 小时前
开源轮子 - Apache Common
java·开源·apache
因我你好久不见1 小时前
springboot java ffmpeg 视频压缩、提取视频帧图片、获取视频分辨率
java·spring boot·ffmpeg
程序员shen1616111 小时前
抖音短视频saas矩阵源码系统开发所需掌握的技术
java·前端·数据库·python·算法
Ling_suu2 小时前
SpringBoot3——Web开发
java·服务器·前端
天使day2 小时前
SpringMVC
java·spring·java-ee