SpringCloud远程调用返回的数据类型转换异常问题

400 阅读1分钟

原因: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);
}

`