代码如下
JSONArray jsonArray = new JSONArray();
JSONArray jsonResult = new JSONArray();
StringBuffer sb = new StringBuffer();
sb.append("from User where depCode like '"+user.getDepCode()+"%'");
if(user.getName() != null && !"".equals(user.getName())){
  sb.append(" and name like '%" + user.getName() + "%'");
}
List<User> users = this.getSession().createQuery(sb.toString()).setFirstResult(start).setMaxResults(limit).list();
System.out.println("==========="+users);
jsonArray = (JSONArray)users;
System.out.println("_____________"+jsonArray);
jsonResult.put(jsonArray);
List list = new ArrayList();
list.add(jsonResult);
list.add(this.countAll(user));
return list;
我的firefox里报java.util.ArrayList cannot be cast to org.json.JSONArray(倒数第7行),
我想得到的是JSONArray格式的,应该怎么处理呢?JavaArrayListJSONArray

解决方案 »

  1.   

    JSONArray和ArrayList 不是一个类型的啊,不能强转的。用 JSONArray.fromObject(users) 获得JSONArray类型数据
      

  2.   

    在不能进行强行转换的时候,你可以自己写一个处理的函数(转换函数),把需要的数据存储新的Array中。这样能够非常清晰的处理问题。
    这里的JSONArray是JAVA自带的类么?
    一些可以强制转换的类型,我只知道基础类型,还有就是子类父类之间的转换。还不清楚是否有其他的可以相互转换的类型的情况。
      

  3.   

    强转发生在有继承关系的父子类之间,JSONArray和List在结构上没任何关联,所以只能用JSONArray.fromObject(List)去实现转换。
      

  4.   

    我的users的数据是这样的[User [name=admin, password=123], User [name=zhangsan, password=123]],用了JSONArray.fromObject(users)后报 There is a cycle in the hierarchy!
    我都想直接遍历uses对象,直接写个jsonarray的数据了
    以前公司的dao层是这样写好了的固定格式:
    JSONArray jsonArray = new JSONArray();
    JSONArray jsonResult = new JSONArray();
    jsonArray = (JSONArray) pml.items(7).getParameterValue();//从数据库查询出数据的方法,格式如select id,name from t_user
    jsonResult.put(jsonArray);
    this.pageCount = (String) pml.items(3).getParameterValue();//从数据库查询出数据个数的方法,格式如select count(id) from t_user
    List list = new ArrayList();
    list.add(jsonResult);
    list.add(this.pageCount);
    return list;
    现在我自己写的时候感觉好纠结,各种不明白啊