@DateTimeFormat注解在Gson反序列化时为何失效?
为什么@DateTimeFormat注解在Gson反序列化时失效?
注解所属框架不匹配:
@DateTimeFormat是Spring框架提供的注解,仅用于Spring生态中的日期参数绑定场景(比如Spring MVC接收请求参数、表单数据解析等),Gson作为独立的JSON序列化/反序列化库,根本不识别这个注解,自然不会遵循它指定的格式规则。Gson默认的日期处理逻辑:Gson对
Date类型的反序列化有自己的内置逻辑,它能自动解析ISO 8601格式的日期字符串(即你JSON中的"2022-10-25T10:38:32.000+01:00"),解析后得到的Date对象本质是一个时间戳。你看到的"Tue Oct 25 15:08:32 IST 2022"只是Date对象调用toString()方法的默认输出格式,和@DateTimeFormat指定的pattern完全无关——因为Gson从未读取过这个注解的配置。
如果需要让Gson按照指定格式处理日期,不需要依赖Spring的注解,直接配置Gson的日期格式即可:
// 创建带日期格式配置的Gson实例 Gson gson = new GsonBuilder() .setDateFormat("yyyy-MM-dd HH:mm:ss") .create(); Root root = gson.fromJson(fileContent, Root.class);
内容的提问来源于stack exchange,提问作者Harmeet Kaur
相关产品推荐
相关产品推荐

