java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to XXX

java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to XXX

今天在用feign进行远程调用的时候报错java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to XXX 类型转换异常
在这里插入图片描述

  • 这里是consumer调用方
        logger.info("添加评论方法被调用前端传来的参数是comment-->{},request--->{}", comment, request);

        // 获取用户的id
        String memberId = JwtUtils.getMemberIdByJwtToken(request);
        if (StringUtils.isEmpty(memberId)) {
            return ResultEntity.failed().message("请登录!").code(28004);
        }

        comment.setMemberId(memberId);
        // 根据用户的id获取用户的信息,用户的头像和昵称
        ResultEntity entity = commentClient.getInfo(memberId);
        Map<String, Object> data = entity.getData();

        System.out.println("data = " + data);
        UserCommentVo commentVo = (UserCommentVo) data.get("userCommentVo");
        logger.info("传入的usercommentvo是----->{}", commentVo);

        // 将用户的昵称和头像设置到评论表中,然后在保存到数据库中
        comment.setNickname(commentVo.getNickname());
        comment.setAvatar(commentVo.getAvatar());
        commentService.save(comment);

  • 这里是provider提供方

    /**
     * 根据token字符串获取用户信息,token字符串是从路径中传递过来的
     * @param id
     * @return
     */
    @GetMapping("/getInfoUc/{id}")
    @ResponseBody
    public ResultEntity getInfo(@PathVariable("id") String id) {
        // 根据用户id获取用户信息
        UcenterMember member = memberService.getById(id);
        UserCommentVo userCommentVo = new UserCommentVo();
        if (!Objects.equals(null, member)) {
            BeanUtils.copyProperties(member, userCommentVo);

        }

        return ResultEntity.success().data("userCommentVo", userCommentVo);
    }

本来想着在ResultEntity中直接得到map,然后map中获取key对应的value值,强转成所需要的对象,但是报错类型转换异常。
后面参考了其他贴子

  • 先将map转成json,在转成对象(这种方式比较简单,很多json工具方法都有)
  • 再将json转换成你要转换的对象即可
        Gson gson = new Gson();
        Object userCommentVo = data.get("userCommentVo");
        String json = gson.toJson(userCommentVo);
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值