标签:Java ArrayList XXX cast JSON 解析 LinkedHashMap
在代码表面上完全没有牵涉到LinkedHashMap时,为什么会抛出类似这样一个错误:LinkedHashMap can not be cast to XXX?
下图就是遇到这情况的例子:
在强制转换中不用泛型进行调试:
从调试结果中来看,在转换为ArrayList时,ArrayList中的元素被默认转换为LinkedHashMap类型了。
解决方法一:
在参数中更深层地设定好泛型时,就能正确解析出结果了,如下图:
缺点:这样满足不了接口的需求:参数Map中存放多种类型的值(有整型、对象数组)。
解决方法二:
采用不同的JSON解析方式:
我知道的是采用alibaba的fastJson 中的JSONObject进行反解析、再解析,大概操作如下:
至于为什么会抛出类似这样一个错误:LinkedHashMap can not be cast to XXX?
我猜是时在解析接收JSON数据时,框架知道的信息不够多,导致不能解析出正确的类型而最后根据默认条件将类型映射到了LinkedHashMap。
非常希望有知道准确原因且愿意留言的大佬,感谢。
人人须日日改过,一旦无过可改,即一日无步可过矣。若发现不妥的点请务必指出,非常感谢。
标签:Java,ArrayList,XXX,cast,JSON,解析,LinkedHashMap 来源: https://www.cnblogs.com/Idealbean/p/15927436.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。