【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;

相关推荐
haven-8521 小时前
AI Agent 生态核心概念详解:Agent、MCP、Skill 与 JSON-RPC
人工智能·rpc·json
_xaboy1 小时前
开源Vue组件FormCreate通过 JSON 生成TinyVue表单
前端·vue.js·低代码·开源·json·表单设计器
yumgpkpm3 小时前
华为HUAWEI昇腾910B下千问Qwen3.6-27B在的推理加速实践
sql·华为·langchain·json·ai编程·ai写作·gpu算力
SilentSamsara4 小时前
文件与数据处理:CSV/JSON/Excel/Parquet 高效操作与内存优化
开发语言·python·青少年编程·性能优化·json·excel
lzhdim16 小时前
SQL 入门 17:MySQL 数据类型:从字符串到 JSON 的全面解析
数据库·sql·mysql·json
无风听海17 小时前
JSON Web Token(JWT)完全指南
java·前端·json
誰能久伴不乏1 天前
Qt C++ 解析 JSON 完全指南:从核心概念到工业级实战
c++·qt·json
空空潍1 天前
使用Coze工作流API实现结构化输出
json·工作流·coze
神奇的代码在哪里1 天前
【单机离线版】excel转json软件,纯HTML+JS零依赖实现Excel转JSON工具,一个index.html搞定所有转换!
html·json·excel·excel转json·xlsx转json·xls转json
爱滑雪的码农2 天前
Java基础二十:JSON 数据解析、对象与 JSON 互转逻辑
json