fastjson泛型转换时出现报错如何解决?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
<中心> 中心>错误信息
异常的线程“main". lang。com.alibaba.fastjson ClassCastException。JSONObject不能投com.xh.demo.UserDO
引用>泛性类
@ data 公开课ResultSetDTO{ 私人整数totalSize; 私人整数数; 私人List 记录; } 实体类
@ data 公开课UserDO { 私人字符串id; 私人字符串名称; }演示测试
公共类AppDemo { 公共静态void main (String [] args) { ResultSetDTOresultSetDTO=new ResultSetDTO (); resultSetDTO.setTotalSize (10); resultSetDTO.setCount (10); List ,列表=new ArrayList<的在(); UserDO UserDO=零; for (int i=10000;我& lt;10003;我+ +){ userDO=new userDO (); userDO。setId (i +““); userDO.setName (“TEST_"+ i); list.add (userDO); } resultSetDTO.setRecords(列表); 字符串jsonString=JSON.toJSONString (resultSetDTO); System.out.println (jsonString); ResultSetDTO resultSet=JSON。parseObject (jsonString ResultSetDTO.class); List 记录=resultSet.getRecords ();//转换是报异常 (UserDO用户:记录){ System.out.println (user.getName ()); } } debuge调试时发现<代码> resultSet.getRecords(); 代码>返回的是<代码> ArrayList
代码>类型,不是<代码> ArrayList 代码>类型。由于类型引用必须强制指定目标对象,因此违背了FastJson规范,所以报:<代码>异常的线程“main". lang。com.alibaba.fastjson ClassCastException。JSONObject不能投com.xh.demo.UserDO。代码> //方法一 JSONObject parseObject=JSON.parseObject (jsonString); List
记录=JSON.parseArray (parseObject.getString (“records") UserDO.class); (UserDO用户:记录){ System.out.println (user.getName ()); }//方法二 ResultSetDTO resultSet=JSON。parseObject (jsonString ResultSetDTO.class); List .toString记录=JSONObject.parseArray (resultSet.getRecords () (), UserDO.class); (UserDO用户:记录){ System.out.println (user.getName ()); }//方法三 ResultSetDTO resultSet=JSON。parseObject (jsonString新TypeReference 在(){}); List 记录=resultSet.getRecords (); (UserDO用户:记录){ System.out.println (user.getName ());} } 关于fastjson泛型转换时出现报错如何解决问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
fastjson泛型转换时出现报错如何解决