我们在做网络请求,并讲结果解析未Bean的时候,因为Bean类型的不统一,所以无法统一的解析Bean,所以不同的Bean类型就要交给不同的类或者方法取实现,那么有没有办法取统一的解析Bean呢?答案时肯定的。
代码:
/**
* 解析json数据
* @param json 服务器或本地取得的json数据
*/
protected T parseJson(String json) {
Type type = this.getClass().getGenericSuperclass();
ParameterizedType parameterizedType = (ParameterizedType) type;
Type[] arguments = parameterizedType.getActualTypeArguments();
T result = new Gson().fromJson(json, arguments[0]);
return result;
}
ParameterizedType 是带有泛型的类的Type,通过Class的getGenericSuperclass方法获得,因为子类带有泛型T,所以使用此类。
getActualTypeArguments可以取得类的所有泛型的真实类型,因为此类只使用了一个泛型,所以直接获取的数组0位置,这样就可以使用Gson活着FastJson来正常解析Json而不用担心泛型擦除的问题了。