使用Hutool 的JSONUtil 讲对象序列化JSONObject 后,若属性 ...
核心异常代码Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException:
No serializer found for class cn.hutool.json.JSONNull and no properties discovered to create BeanSerializer
(to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS)
(through reference chain: com.xxx.xxx.util.Result["data"]->cn.hutool.json.JSONObject["xxxx"])产生原因
Hutool会使用JSONNull来表示空值,而SpringBoot默认使用的序列化是Jackson,在接口调用过程中使用了Map,直接传入了Hutool的JSONObject,而该Map存在空值,所以存在JSONNull,最终导致错误。
其中出现的关键报错信息为 : no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS)
出现原因经过查阅应该是由于要序列化的数据是个空对象,如 new object(),而追究到实际情况大体是由于在使用web3j的java-sdk时尝试减少返回数据而将某个参数改为false使得部分数据未进行渲染引起的。实际调用代码如下:
然后上网一查比较多的是
[*]使用fastJson 这样做没问 (但是存在空值略过不响应给前端的问题)
[*]使用下方代码
解决方案
一种 是使用fastjson
参考:
另一种是和最下方文章描述那样 重写
WebMvcConfigurationSupport中的configureMessageConverters方法
但是!我想做补充的是
如果你使用的是公司项目的框架,一般项目中的框架都会对响应出去的参数做序列化,你可以直接把返回参数改成Object或者map就行!
至此 问题才算解决
文章参考:
页:
[1]