【fastjson和Jackson的时间日期的反序列化的差异】

有次遇到了spring controller接口能正常接受序列化的时间格式,但代码中反而不行。

@RequestBody注解序列化JSON与代码中JSON.parseObject(playloadJson, clazz)的差异

本质是spring@RequestBody注解序列化JSON采用的是Jackson,而代码中使用的是fastjson JSON.parseObject

fastjson和Jackson是两个不同的JSON库,它们在处理日期格式时有一些不同的行为。

在默认情况下,fastjson会尝试将日期字符串解析为Java的默认日期格式,即 yyyy-MM-dd HH:mm:ss 。如果日期字符串的格式与默认格式不匹配,fastjson将无法正确解析日期。

相比之下,Jackson具有更灵活的日期解析机制。它可以根据日期字符串的格式自动解析日期,无需显式指定格式。Jackson使用了一种称为"Date Deserialization"的机制来处理日期的反序列化,它可以根据多种常见的日期格式进行解析。 但是,为了更精确地控制日期的解析行为,Jackson也提供了 @JsonFormat 注解,您可以使用它来指定日期字段的格式。这样可以确保Jackson按照您的要求进行日期解析。 所以,fastjson需要指定日期格式是因为它的默认解析行为是基于Java的默认日期格式,而Jackson具有更灵活的日期解析机制,可以自动识别日期格式,但也可以通过注解进行更精确的控制。

因为fastjson有默认的时间格式,在序列化时遇到不常见的时间格式,如纳秒级的2023-07-04T10:00:00.0000000不能正常解析,如果需要解析,需要采用@JsonFormat指定格式

@JSONField(format = "yyyy-MM-dd'T'HH:mm:ss.SSSSSSS")

private Date date;

相关推荐
曹牧8 小时前
Oracle数据库中,将JSON字符串转换为多行数据
数据库·oracle·json
捧月华如18 小时前
响应式设计原理与实践:适配多端设备的前端秘籍
前端·前端框架·json
kimi-22221 小时前
如何让大语言模型稳定输出 JSON 的三层防御体系
人工智能·语言模型·json
历程里程碑2 天前
Protobuf vs JSON vs XML:小白该怎么选?
xml·大数据·数据结构·elasticsearch·链表·搜索引擎·json
Java成神之路-3 天前
SpringMVC 响应实战指南:页面、文本、JSON 返回全流程(Spring系列13)
java·spring·json
我命由我123453 天前
在 React 项目中,可以执行 npm start 命令,但是,无法执行 npm build 命令
前端·javascript·vue.js·react.js·前端框架·json·ecmascript
带刺的坐椅3 天前
RFC 9535:JSONPath 的标准化之路
java·json·jsonpath·snack4·rfc9535
孙同学20203 天前
如何将 JSON 数据转换为 Excel 工作表
python·json·excel
ID_180079054733 天前
除了 Python,还有哪些语言可以解析 JSON 数据?
开发语言·python·json
电商API&Tina4 天前
跨境电商如何接入1688官方寻源通接口?附接入流程
java·数据库·python·sql·oracle·json·php