一、该问题的重现步骤是什么?
升级到4.4后,调用feign接口的服务,客户端 对象String类型序列化 null 变成了 "", 导致服务端接收的对象属性变成了""。 mapper.update(对象),将所有null属性都更新成了"";
JacksonConfiguration.java
(Boolean..equals(properties.getNullToEmpty())) { objectMapper.setSerializerFactory(objectMapper.getSerializerFactory().withSerializerModifier(BladeBeanSerializerModifier()))objectMapper.getSerializerProvider().setNullValueSerializer(BladeBeanSerializerModifier.NullJsonSerializers.)}
注释掉上述代码后,解决问题。
feign调用,经过客户端序列化->服务端反序列化。需要考虑客户端序列化造成的影响。
二、你期待的结果是什么?实际看到的又是什么?
blade.jackson 序列化增强, 在api接口层就好了,feign层反序列化无法还原原始对象。
如:字符串类型,数组类型,枚举类型等null值,反序列化还原错误或反序列化错误。
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
BladeX 4.4
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
这就有点尴尬了,前阵子刚有个用户强烈要求改成null转空字符串。要不你们battle一下先,我趁着空档加个配置自由开启关闭这个字段的序列化逻辑吧。
==========
重新做了全局调整,你按照这个提交修改后再测试下:https://center.javablade.com/blade/BladeX-Tool/commit/2378e3336db74974559fd4fd03f01213d708f085
若有问题请继续社区反馈
扫一扫访问 Blade技术社区 移动端