找回密码
 立即注册
查看: 284|回复: 0

使用Hutool 的JSONUtil 讲对象序列化JSONObject 后,若属性 ...

[复制链接]
发表于 2022-4-30 07:23 | 显示全部楼层 |阅读模式
核心异常代码

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就行!
至此 问题才算解决
文章参考:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2025-5-3 16:17 , Processed in 0.136219 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表