记一个Jackson与Hutool混用的坑 No serializer found for class cn.hutool.json.JSONNull and no properties discov
json
适用于现代 C++ 的 JSON。
项目地址:https://gitcode.com/gh_mirrors/js/json
免费下载资源
·
问题:
前端在获取接口的时候,有一个JsonObject put字段的值为null,前端获取不到查看源码发现
原来会默认忽略为null的值 ,
所以这好办啊,构造参数重新设值就好了,于是如下图
启动,运行,再返回前端的时候竟然报错了,看错误信息
问题分析
Hutool会使用JSONNull
来表示空值,而SpringBoot默认使用的序列化是Jackson,在接口调用过程中使用了Map,直接传入了Hutool的JSONObject,而该Map存在空值,所以存在JSONNull,最终导致错误。
问题解决
使用DTO传递参数,总之就是不要直接把JSONObjct作为参数传递。
总结
在使用JSON序列化工具的时候,尽量不要混合使用,即使存在多个JSON工具,也不把一个JSON工具的JSON对象直接用另一个JSON工具来处理,因为每个JSON工具都有自己的对JSON的处理,包括一些优化,如果混着用就会出问题,所以,在使用JSON工具处理JSON的时候不要混着使用多种JSON
吐槽
这里吐槽下Hutool,null值处理的时候要小心,非空判断用JSONObject.isNull
,不要自行处理
GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e
3 个月前
8c391e04
6 个月前
更多推荐
已为社区贡献4条内容
所有评论(0)