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

相关推荐
㱘郳13 小时前
VS Code 的setting.json的预配置
json
一拳小和尚LXY21 小时前
我开发了一款免费 Chrome 插件 TabScribe:一键复制所有标签页为 Markdown/JSON,完全离线零追踪
前端·chrome·json
nap-joker1 天前
使用n8n+飞书搭建自动推送新闻机器人
javascript·json·飞书·工作流·n8n·36氪新闻向客户端推送
一只积极向上的小咸鱼1 天前
TOML、JSON、YAML、INI 配置文件格式总结
java·服务器·json
San813_LDD1 天前
[后端开发]GET/POST_带参/不带参
前端·后端·计算机网络·json
winfredzhang1 天前
Python 实战:用 wxPython 写一个 MD5 文件查重清理工具
python·sqlite·json·wxpython·md5·预览·查重
木雷坞2 天前
6月 Docker 国内镜像源配置:daemon.json、/v2/ 连通性和 pull 验证
docker·eureka·json
落羽的落羽2 天前
【项目】JsonRpc框架——开发实现2(业务层)
linux·数据结构·c++·人工智能·算法·json·动态规划
ward RINL3 天前
WorkBuddy 自定义模型配置踩坑记录:models.json、/v1、API Key 一次讲清楚
json
m0_738120723 天前
渗透测试基础——一文详解JSONP跨域劫持漏洞原理与利用
服务器·安全·web安全·json