提示:以下是本篇文章正文内容,下面案例可供参考
场景描述:
现有A、B两个服务。
A服务用于授权,授权成功会存储对象到redis中。
B服务通过token去redis中拿到object对象后转换成业务对象是出现该种错误信息。
原因分析:
A服务存储对象到redis中时候会对应有一个全路径类名限定。在通过token进行取对象值并强制转换的时候,
如果接收对象的全路径名称和redis中保存的不一样的话就会转换失败报错。
解决办法:
`方法一:`
获取并转换接收redis中的对象时将接收对象的全路径与redis中保持一致。
略势:通常生产环境下,不同的服务对应不同的场景模块,自然对应的包名称也会根据当前的业务模块进行设定,
所以此种方法并不友好,所以感觉并不建议采用此种方法。
`方法二:`
从源头上解决,将保存对象的方式,换成其他方式。
补充fastjson包中的常见操作:
// Java对象转换成String类型的JSON字符串
JSONObject.toJSONString(Java对象)
// String类型的JSON字符串转换成Java对象
JSONObject.toJavaObject(JSON字符串,Java对象.class)
// Json字符串转换成JSONObject对象
JSONObject.parseObject(JSON字符串)
// JSON字符串转换成Java对象
JSONObject.parseObject(JSON字符串,Java对象.class)