今天写一个解析时后台返回的对象不确定,不能每个对象都去写个type
- Type type = new TypeToken<List<Info>>() {}.getType();
- Object fromJson2 = gson.fromJson(readContext, type);
- List<Info> list = (List<Info>) fromJson2;
java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to appuccino.simplyscan.Objects.Folder错误
解决方案:
查看了一下LinkedTreeMap,可通过key来获取value的map。与TreeMap不同的是,这类使用迭代顺序插入顺序。比较顺序只作为一个优化的有效的插入和去除。它实现了Android 4.1的TreeMap类。所以在获得object对象的时候Gson会把不同的泛型按key和value形式存储起来,使用时只需要对LinkedTreeMap进行遍历即可
LinkedTreeMap tm = (LinkedTreeMap)fromJson2;
Iterator it = tm.keySet().iterator();
while (it.hasNext()) {
String key = (String) it.next();
String value = (String)tm.get(key);
}
本文介绍使用Gson解析不确定类型的JSON数据时遇到的问题及解决办法,包括如何避免ClassCastException异常,通过遍历LinkedTreeMap正确处理泛型。


被折叠的 条评论
为什么被折叠?



