问题:

前端在获取接口的时候,有一个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 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐