项目背景:

后台通过JSONObject形式存入到redis,前台通过hutool方式将jsonstring转换为jsonobject对象使用时报错,错误信息如标题所示。

搜索问题发现有大佬说:

Hutool会使用JSONNull来表示空值,而SpringBoot默认使用的序列化是Jackson,在接口调用过程中使用了Map,直接传入了Hutool的JSONObject,而该Map存在空值,所以存在JSONNull,最终导致错误。

我的解决方案为不通过hutool工具来转换,也即

JSONObject jsonObject = JSONUtil.parseObj(jsonStr);

使用这个方式转换传输到前台就会报错。我的处理方式是使用fastjson的方式来转换,如下

com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(gpString);

问题解决!

具体分析看红色部分!看完源码,hutool转换的时候默认忽略null值,此处我们也可以使用此种方案来处理。如下:(经过验证,以下这种方式不可行,此处暂时做个转换记录)

// false表示不跳过空值
JSONObject json = JSONUtil.parseObj(userA, false);
Console.log(json.toStringPretty())

完!!!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐