com.alibaba.fastjson.JSONObject cannot be cast to xxx 异常处理
·
开发时候遇到一个错误com.alibaba.fastjson.JSONObject cannot be cast to xxx.xxx
先看两个JSON字符串
{"@type":"com.hieasy.system.domain.user.SysUser","avatar":"","bdje":0.0D,"userTypeName":"用户","zhje":0.0D}
{"avatar":"","bdje":0.0,"userTypeName":"用户","zhje":0.0}
问题原因分析
第一个包含 "@type":"com.hieasy.system.domain.user.SysUser"
→ 表示这是 Fastjson 的 类型提示(type hint),告诉 Fastjson:这个 JSON 应该反序列化为 SysUser 类。
第二个没有 "@type" 字段
→ Fastjson 不知道它应该是一个 SysUser,所以默认解析为 JSONObject。
当我用下面的代码:
JSONObject jsonObj= redisService.getCacheObject(key);
或者
SysUser user= redisService.getCacheObject(key);
不管用哪个 上面2个字符串解析都不能一起正确,然后写了下面的方法
SysUser sysUser;
Object obj = redisService.getCacheObject(key);
if(obj instanceof SysUser){
sysUser = (SysUser)obj;
}else{
sysUser =JSON.parseObject(JSON.toJSONString(obj),SysUser.class);
}
但是上面的方法还是有一定的限制,然后有了下面的方法:
Object obj= redisService.getCacheObject(key);
if(null!=obj){
JSONObject jo= JSON.parseObject(JSON.toJSONString(obj));
}
更多推荐
所有评论(0)