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

相关推荐
李昊哲小课6 小时前
Python json模块完整教程
开发语言·python·json
江湖有缘7 小时前
本地化JSON 处理新方案:基于 Docker的JSON Hero部署全记录
java·docker·json
进击的雷神12 小时前
前端路由动态渲染、JSON内嵌HTML清洗、展位信息数组化、分页参数固定化——尼日利亚展会爬虫四大技术难关攻克纪实
前端·爬虫·python·json
147API14 小时前
Claude JSON 稳定输出:Schema 校验与修复回路(Kotlin)
开发语言·kotlin·json·claude
jackletter15 小时前
在pgsql中封装一个json函数,让它完全模拟mysql中的json_set
数据库·mysql·json·pgsql·json_set
jimy116 小时前
字节流(XML、JSON、文件、网络、图像、加密…)必须用无符号语义unsigned char
xml·c语言·网络·json
qingcyb17 小时前
JsonNode获取json指定key对应value值
json
蒙塔基的钢蛋儿19 小时前
使用STM32CUEBEIDE/S32DS 开发时,生成compile_commands.json 方便VSCODE智能提示
vscode·stm32·单片机·json
qingcyb19 小时前
JacksonUtilTest
windows·json
l1t20 小时前
利用DuckDB 1.5的json和struct功能分析llama web-ui导出的对话json文件
前端·ui·json