kirin77 发表于 2022-4-30 07:23

使用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]
查看完整版本: 使用Hutool 的JSONUtil 讲对象序列化JSONObject 后,若属性 ...