开发时候遇到一个错误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));
        }

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐