以下代码意思:请求一个接口,要求返回 Result<GlobalUser>。
ResponseEntity<Result> response = restTemplate.exchange(url, HttpMethod.PUT, null, Result.class); //①
if (response.getStatusCode().is2xxSuccessful()){
Result<GlobalUser> result = response.getBody();
if(result.getCode()==200){
GlobalUser globalUser = result.getData(); //这行代码会出错
}
}
报错内容:java.util.LinkedHashMap cannot be cast to cn.timetr.server.bean.GlobalUser 也就是说,一个 json 对象给我匹配成键值对 HashMap 了,我估计是上面第一行代码①导致的。
于是我想写成这样:ResponseEntity<Result<GlobalUser>> response = restTemplate.exchange(url, HttpMethod.PUT, null, Result<GlobalUser>.class); 但这样不行,Result<GlobalUser>.class 报错,不能这样写,但我想按这个思路寻求有何解? 当然不按这个思路,可以将报错代码用 Mapper 转换一下改成这样,GlobalUser globalUser = new ObjectMapper().convertValue(result.getData(), GlobalUser.class);,但这样就导致了每次写相关代码都要手动转换一下并不优雅。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.