【exceptions】java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to xxxxx
来源:互联网 发布:2017php应聘要求 编辑:程序博客网 时间:2024/05/17 18:46
这个问题是我在用jackson将字符串准换成指定对象的List,转换的时候没有异常,但是通过for循环拿出对象使用的时候出现的问题.原来我的转换是写在controller里面,后来为了通用准备写到工具类中,但是发现一个问题,就是在controller中可以正确转换并在service中使用,通过工具类来获取后就在service中使用出抛出这个异常.
- controller中的处理
// json解析器ObjectMapper om = new ObjectMapper();// 解析出来的所有明细List<XXX> list = null;try { details = om.readValue(getPara("json"), new TypeReference<List<XXX>>() { });} catch (IOException e) { log.info("json解析失败:" + e.getMessage()); return;}
这样的处理结果是正确的,可以正常使用,但是写在工具类中出现了这个异常
- 工具类中的处理
@SuppressWarnings("unchecked")public static <T> List<T> parseJsonList(String json, Class<T> clazz) { try { ObjectMapper INSTANCE = new ObjectMapper(); return (List<T>) INSTANCE.readValue(json, new TypeReference<List<T>>() { }); } catch (IOException e) { e.printStackTrace(); } return null;}
转换没有出现问题,但是到使用的时候,这个List里面的对象是LinkedHashMap,并没有转化成我需要的T.导致了这个问题
- 解决方法
/** * @param json 准备转换json * @param clazz 集合元素类型 * @return * @description json字符串转换成对象集合 * @author paul * @date 2017年8月12日 下午1:28:27 * @update 2017年8月12日 下午1:28:27 * @version V1.0 */@SuppressWarnings("unchecked")public static <T> List<T> parseJsonList(String json, Class<T> clazz) { try { JavaType javaType = getCollectionType(ArrayList.class, clazz); return (List<T>) INSTANCE.readValue(json, javaType); } catch (IOException e) { e.printStackTrace(); } return null;}/** * @param collectionClass 集合类 * @param elementClasses 集合元素类 * @return * @description 获取泛型的ColloectionType * @author paul * @date 2017年8月12日 下午2:17:38 * @update 2017年8月12日 下午2:17:38 * @version V1.0 */private static JavaType getCollectionType(Class<?> collectionClass, Class<?>... elementClasses) { return INSTANCE.getTypeFactory().constructParametricType(collectionClass, elementClasses); }
这个方法是我在网上找到的一个可用的方法,解决了这个问题.但是这个问题是怎么产生的还是不知道,如果有知道的大神记得评论一下,谢谢.
我的博客中有一个JsonUtil工具类,不定时更新,解决方法也在里面
阅读全文
0 0
- 【exceptions】java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to xxxxx
- 打混淆包的时候 遇到一个 java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to ..问题
- java.util.LinkedHashMap cannot be cast to
- java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.util.Map
- java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList
- java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.String
- jedis 出现java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.Long
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.util.Map
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.util.Map
- java.lang.ClassCastException: org.hibernate.impl.QueryImpl cannot be cast to java.util.List
- java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.ssh.domain.Article
- java.lang.ClassCastException: org.hibernate.impl.SQLQueryImpl cannot be cast to java.util.List
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to ]
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to
- java.lang.ClassCastException:org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.apache.AnnotationProcesso
- Collator中文比较类
- [SDUT](1269)走迷宫 ---DFS(图)
- Page Count (字符串+模拟)
- Velocity模板相关学习资料
- 六大设计原则之开闭原则
- 【exceptions】java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to xxxxx
- AC自动机算法简介(洛谷P3808)
- Python学习笔记之错误处理(关键词:错误处理、异常机制、try、except、else、finally、raise)
- Python-Pandas(2)数值计算与排序
- 使用Docker的macvlan为容器提供的桥接网络
- [LeetCode]141. Linked List Cycle
- xml文档解析 DOM和DOM4J分析
- Linux下创建进程的三种方式及特点
- Javaweb容器的四种作用域