泛型擦除问题带来的无法正常解析Json问题

来源:互联网 发布:python 自带shell 编辑:程序博客网 时间:2024/06/05 05:25

我们在做网络请求,并讲结果解析未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而不用担心泛型擦除的问题了。

0 0
原创粉丝点击