SpringCloud 复杂对象接收时候对象变成LinkeHashMap
定义的接口如下
@GetMapping("/sys/user/info/{username}")
FwResult info(@PathVariable("username") String username);
FwResult 是一个返回的规范,格式如下
{
"code": 200|500,
"data": “数据”,
"meta": "分页信息",
"msg": "消息"
}
我们需要拿到的是FwResult 里的data 数据,并由接收方使用。
在调用的过程中出现了
java.util.LinkedHashMap cannot be cast to com.yisu.system.entity.SysUser
问题原因
因为rpc远程调用在底层还是使用的HTTPClient,所以在传递参数的时候,必定要有个顺序,当你传递map的时候map里面的值也要有顺序,不然服务层在接的时候就出问题了,所以它才会从map转为linkedhashMap!
解决方案
- 将接收到的数据先转JSON,再转实体 - String jsonStr = JSONUtil.toJsonStr(fwResult.getData());
- SysUser sysUser = JSONUtil.toBean(jsonStr,SysUser.class);
 
- 直接在远程调用的接口层定义返回结果的泛型 - @GetMapping("/sys/user/info/{username}")
- FwResult<SysUser> info(@PathVariable("username") String username);
 
 
                         
                                

