GSON解析传入泛型T,出现类型转换异常

数据源:

[
    {
        "name": "小龙",
        "age": 22,
        "address": {
            "Long_name": "中国大陆",
            "short_name": "北京"
        }
    },
    {
        "name": "小娜",
        "age": 21,
        "address": {
            "Long_name": "中国大陆",
            "short_name": "上海"
        }
    }
]

1.解析的关键在于创建Bean,创建Bean的核心在于,分层创建。
本例分析:
(1)第一层这个list中有两个对象,这个对象的属性是name,age,address。
(2)第二次这个对象的属性是Long_name和short_name。
解析如下

List pareseList = new Gson().fromJson(str, new TypeToken<List>() {}.getType() );

通过pareseList 拿到每个对象,进而拿到属性的值。

==========================错误

    public static <T> List<T> parseJsonArrayWithGson(String data,
Class<T> type) { 
                    List<T> result = new Gson().fromJson(jsonData, new TypeToken<List<T>>() {}.getType());
                   return result;
    }

看起来没有任何的问题,用泛型来约束,以后只需要传入Bean就行。在真正的使用的时候,出现类型转化异常。原因在于传入的泛型的擦除机制,仅仅编译的时候有效,运行时候,会去掉。传入的type需要明确的类型。

你可能感兴趣的:(Android笔记,泛型,gson,异常)