之前遇到这个问题的情况是:给App做转发接口的,当时的项目是存在和其他平台交互出现的问题,所以他们那边平台比较大,东西封装的比较多,可能他们的架构师当时没有想到这个问题,所以导致出现这个bug,由于不能从他们平台解决这个bug,所以只能那个平台交接的时候自己来做处理
出现的异常:
HTTP Status 500 - Could not write JSON: Object is null; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Object is null (through reference chain: net.sf.json.JSONObject["errorCode"]->net.sf.json.JSONNull["empty"])
出现的情况:
a).和A平台交互,但是需要拿取A平台查询到的信息。
b).给别人做对外API,出现了此类问题
问题解决方案:
其实最主要的就是对他进行非空判断就可以,方法有很多的,但是也都是不太一样的,
方法一:
实体类最上边添加的是@JsonInclude(JsonInclude.Include.NON_NULL)
1、如果放在属性上,如果该属性为NULL则不参与序列化 ;
2、如果放在类上,那对这个类的全部属性起作用 ;
参数说明:
JsonInclude.Include.ALWAYS 默认
JsonInclude.Include.NON_DEFAULT 属性为默认值不序列化
JsonInclude.Include.NON_EMPTY 属性为 空(””) 或者为 NULL 都不序列化
JsonInclude.Include.NON_NULL 属性为NULL 不序列化
方法二(不建议使用这个方法):
写一个工具类,就是对实体类的属性进行一个一个的非空判断,这种方法不可取,非常的麻烦,对代码影响还不是太好。
在实战中学习,在快乐中成长