fastjson泛型转换时出现报错如何解决

  介绍

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);
  
  ResultSetDTOresultSet=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。

 fastjson泛型转换时出现报错如何解决”> <br/> </p> <p>解决方法</p> <pre class=//方法一   JSONObject parseObject=JSON.parseObject (jsonString);   List记录=JSON.parseArray (parseObject.getString (“records") UserDO.class);   (UserDO用户:记录){   System.out.println (user.getName ());   }//方法二   ResultSetDTOresultSet=JSON。parseObject (jsonString ResultSetDTO.class);   List.toString记录=JSONObject.parseArray (resultSet.getRecords () (), UserDO.class);   (UserDO用户:记录){   System.out.println (user.getName ());   }//方法三   ResultSetDTOresultSet=JSON。parseObject (jsonString新TypeReference在(){});   List记录=resultSet.getRecords ();   (UserDO用户:记录){   System.out.println (user.getName ());}   }

关于fastjson泛型转换时出现报错如何解决问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

fastjson泛型转换时出现报错如何解决