原因:SpringCloud 调用远程服务时的返回数据类型为LinkedHashMap,如果将data转换成自己想要的类型会报类型转换异常。 所以需要利用JSON将类型转换一下
第一种方式
public class R extends HashMap<String, Object> {
public R setData(Object data){
put("data",data);
return this;
}
//利用fastjson进行逆转
public <T> T getData(TypeReference<T> typeReference){
Object data = get("data");//默认是map类型
if(Objects.isNull(data)){
return null;
}
String s = JSON.toJSONString(data);
T t = JSON.parseObject("",typeReference);
return t;
}`
第二种方式
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
//远程调用,返回指定集合,但这个集合直接使用不了,因为他是一个LinkedHashMap。
List<InnerControl> remoteList = restTemplate.getForObject("url", List.class);
remoteList = transToList(remoteList);//转换之后,就能够正常使用这个集合了。
//定义一个方法,将LinkedHashMap类型转成我们想要的数据类型
private List<InnerControl> transToList(List<InnerControl> list){
String jsonStr = JSON.toJSONString(list);//依旧使用alibaba提供的json转换工具。
return JSONObject.parseArray(jsonStr, InnerControl.class);
}
`