谷粒商城公共返回R加泛型获取不到data,反序列化之后data为空

照着实现的时候,发现报了空指针错误,定位以后发现:
在这里插入图片描述
远程调用以后这个给统一返回对象R加上泛型以后,获取不到data值,这里data为空
在这里插入图片描述
debug发现查询是否有库存时,这个vos是有值的,这里将vos设置进data时候出了问题:
在这里插入图片描述
可以看到,在经过setData以后,R的返回值里面只有msg和code,并没有data。

这里需要修改公共模块中R的data方法,注释掉原来的data构造参数,并新增以下代码
在这里插入图片描述

public R setData(Object data) {
    
    
		put("data",data);
		return this;
	}

	//利用fastjson进行反序列化
	public <T> T getData(TypeReference<T> typeReference) {
    
    
		Object data = get("data");	//默认是map
		String jsonString = JSON.toJSONString(data);
		T t = JSON.parseObject(jsonString, typeReference);
		return t;
	}

	//利用fastjson进行反序列化
	public <T> T getData(String key,TypeReference<T> typeReference) {
    
    
		Object data = get(key);	//默认是map
		String jsonString = JSON.toJSONString(data);
		T t = JSON.parseObject(jsonString, typeReference);
		return t;
	}

这样改造完R对象以后,就可以正常使用setData方法往R对象里面设置参数data:
在这里插入图片描述

在取出值的时候,通过以下方式可以get到设置进去的data数据:
在这里插入图片描述

 R skusHasStock = wareFeignService.getSkusHasStock(skuIdList);
      
 TypeReference<List<SkuHasStockVo>> typeReference = new TypeReference<List<SkuHasStockVo>>() {
    
    };
   List<SkuHasStockVo> data = skusHasStock.getData(typeReference);

猜你喜欢

转载自blog.csdn.net/weixin_42260782/article/details/128483301