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

相关推荐
电商API&Tina9 小时前
电商API接口的应用与简要分析||taobao|jd|微店
大数据·python·数据分析·json
方方洛13 小时前
技术实践总结:schema-bridgion:json、xml、yaml、toml文件相互转换
xml·前端·typescript·node.js·json
提笔了无痕1 天前
Web中Token验证如何实现(go语言)
前端·go·json·restful
EndingCoder2 天前
配置 tsconfig.json:高级选项
linux·前端·ubuntu·typescript·json
电商API&Tina2 天前
Python请求淘宝商品评论API接口全指南||taobao评论API
java·开发语言·数据库·python·json·php
\xin2 天前
SQL 注入、文件上传绕过、MySQL UDF 提权、SUID 提权、Docker 逃逸,以及 APT 持久化技术渗透测试全流程第二次思路
sql·mysql·docker·容器·渗透测试·json·漏洞
傻啦嘿哟3 天前
构建命令行单词记忆工具:JSON词库与复习算法的完美结合
算法·json
lanicc3 天前
JsonSurfer:高性能、流式 JSON 解析利器
json
☀Mark_LY4 天前
java读取excel文件返回JSON
java·json·excel
love530love4 天前
【故障解析】Stable Diffusion WebUI 更换主题后启动报 JSONDecodeError?可能是“主题加载”惹的祸
人工智能·windows·stable diffusion·大模型·json·stablediffusion·gradio 主题