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 类型转换异常
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to XXX_第1张图片

  • 这里是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);

你可能感兴趣的:(记录bug,feign,Exception)