您的位置:首页 > 其它

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

2017-09-18 16:40 543 查看
数据源:

[
{
"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<ObjectFirst> pareseList = new Gson().fromJson(str, new TypeToken<List<ObjectFirst>>() {}.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需要明确的类型。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐