fastjson2 icon indicating copy to clipboard operation
fastjson2 copied to clipboard

[BUG] 2.0.56开始布尔类型序列化存在问题

Open Johnathon713 opened this issue 7 months ago • 3 comments

fastjson版本升级到2.0.56或2.0.57版本之后(2.0.55以前的版本正常),spring mvc 的HttpMessageConverter配置为fastjson2后,部分项目的请求体参数中布尔类型存在以下问题:传入true时正常,传入false时序列化后的参数为null 。疑似存在兼容问题。

Johnathon713 avatar May 08 '25 09:05 Johnathon713

你好,方便给一下,能重现该问题的代码吗?

jujn avatar May 08 '25 11:05 jujn

你好,方便给一下,能重现该问题的代码吗?

排查了一下,发现问题触发需要如下几个条件: 1、@RequestBody注解标注的类中含有LocalDateTime类型的字段。 2、请求体中的json字符串在这个字段后面的布尔类型传入false。

例如请求体如下: { "date": "", "abc": false, "def": "def" } 其中date后端类型为LocalDateTime,abc为Boolean,def为String。LocalDateTime反序列化结果为null,abc反序列化结果为null(此处应为false),def反序列化结果为def。 而请求体中将date的位置放在abc后面则不会出现此问题。

Johnathon713 avatar May 12 '25 05:05 Johnathon713

你好,方便给一下,能重现该问题的代码吗?

排查了一下,发现问题触发需要如下几个条件: 1、@RequestBody注解标注的类中含有LocalDateTime类型的字段。 2、请求体中的json字符串在这个字段后面的布尔类型传入false。

例如请求体如下: { "date": "", "abc": false, "def": "def" } 其中date后端类型为LocalDateTime,abc为Boolean,def为String。LocalDateTime反序列化结果为null,abc反序列化结果为null(此处应为false),def反序列化结果为def。 而请求体中将date的位置放在abc后面则不会出现此问题。

这个bug确实挺巧妙的,现在已修复,有时间的话,希望可以在下一个版本发布时帮忙验证

jujn avatar May 15 '25 03:05 jujn

https://github.com/alibaba/fastjson2/releases/tag/2.0.58 问题已修复,请用新版本

wenshao avatar Jul 30 '25 05:07 wenshao