问题:
前端在获取接口的时候,有一个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
,不要自行处理