Bootstrap

解决net.sf.json包json化后,对象系列化时net.sf.json.JSONNull[“empty“]错误

解决net.sf.json包json化后,对象系列化时net.sf.json.JSONNull[“empty”]错误

一、问题描述

前端(使用angularjs的架构)调用后台接口后显示404,看后台日志接口已经请求成功了。所以有两点就很奇怪了:

问题一:请求了接口会什么会报404?为什么会没有错误日志

问题二:这个具体的错误到底是什么?

带着这样的疑问,我们来开启我们的定位调试之旅吧~

二、问题一解决问题

先说明下我使用的系统架构:前端使用angularjs 后端使用springmvc模式

1)找到报错点

我们系统使用的是前后端分离的架构,所以服务是划分为web(前端页面相关)、service(具体业务逻辑)两个模块的。看日志是发现接口是正常请求完成的。我的复现方式是本地其服务来调试的。

2)调试错误链

**错误原因:定义的实体类若未赋值(即为null),json时被转化为“null”.JSONNUll对象接口返回后,springmvc系列化会抛出异常:ModelAndView: reference to view with name ‘error’; model is {exception=org.springframework.http.converter.HttpMessageNotWritableException: Could not write content: Object is null (through reference chain: java.util.HashMap[“result”]->java.util.HashMap[“data”]->java.util.HashMap[“test”]->java.util.HashMap[“testBO”]->net.sf.json.JSONNull[“empty”]); **

1.接口请求现象:
在这里插入图片描述
2.接口使用net.json执行json化的代码
在这里插入图片描述
3.数据被json化后的结果,可以看到bean对象为null时会被转化为JSONNull对象,体现形式为"null"
在这里插入图片描述
4. 在请求完成后,springmvc框架后续执行调用链在这里插入图片描述
5. “null”在经过BeanSerializer系列化器时会抛出“Object is null”
在这里插入图片描述
6. 报错代码
在这里插入图片描述

;