[BUG] 2.0.56开始布尔类型序列化存在问题
fastjson版本升级到2.0.56或2.0.57版本之后(2.0.55以前的版本正常),spring mvc 的HttpMessageConverter配置为fastjson2后,部分项目的请求体参数中布尔类型存在以下问题:传入true时正常,传入false时序列化后的参数为null 。疑似存在兼容问题。
你好,方便给一下,能重现该问题的代码吗?
你好,方便给一下,能重现该问题的代码吗?
排查了一下,发现问题触发需要如下几个条件: 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后面则不会出现此问题。
你好,方便给一下,能重现该问题的代码吗?
排查了一下,发现问题触发需要如下几个条件: 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确实挺巧妙的,现在已修复,有时间的话,希望可以在下一个版本发布时帮忙验证
https://github.com/alibaba/fastjson2/releases/tag/2.0.58 问题已修复,请用新版本