list集合转换成jsonArray树(java后台)

这是数据库中要查询的表

list集合转换成jsonArray树(java后台)

首先创建个实体类OrderEntity,OrderEntity实体类中属性加入List<OrderEntity> childrens,加个toString()方法

list集合转换成jsonArray树(java后台)

 

 

 

 

创建两个方法

/**
     * List转换成tree
     * @param listOr
     * @param orderId
     * @return
     */
    public List<OrderEntity> initTree(List<OrderEntity> listOr,int orderId){
        List<OrderEntity> arrayList=new ArrayList<OrderEntity>();
         for (int i = 0; i < listOr.size(); i++) {
             OrderEntity order=listOr.get(i);
             //如果有父级id与id相同,则证明当前类为orderId的子类
             if(order.getParentId().equals(orderId+"")){
                  //判断该子类下是否还有子类
                 List<OrderEntity> listOrs=initTree(listOr,order.getOrderId());
                 //如果有子类,则判断children中是否已经赋值
                 if(listOrs.size()>0){
                      //如果已经children已经赋值,则使用for循环将子类加入到children中
                      if(null!=order.getChildrens() && order.getChildrens().size()>0){
                           List<OrderEntity> chilOrder=order.getChildrens();
                           for(int j = 0; j < listOrs.size(); j++) {
                               chilOrder.add(listOrs.get(j));
                           }
                           order.setChildrens(chilOrder);
                      }else{//如果没有赋值,则将数据直接加入到children中
                          order.setChildrens(listOrs);
                      }
                      arrayList.add(order);
                 }else{  //如果没有值,直接加入到arrayList
                    
                    arrayList.add(order);
                 }
             }
         }
        
         return arrayList;
    }
    
    
    /**
     * 查询没有子类的实体类是否已赋值
     * @param arrayList
     * @param order
     * @return
     */
    public boolean getOrder(List<OrderEntity> arrayList,OrderEntity order){
        boolean resu=true;
        for (int i = 0; i < arrayList.size(); i++) {
            OrderEntity entity=arrayList.get(i);
            //如果和当前实体类重复,返回false
            if(entity.getOrderId()==order.getOrderId()){
                resu=false;
                break;
            }else{ //查询子类是否重复
                if(null!=entity.getChildrens() && entity.getChildrens().size()>0){
                    resu=getOrder(entity.getChildrens(),order);
                    if(!resu){
                        break;
                    }
                }
            }
        }
        return resu;
    }

 在数据库中查询list集合后,调用listOc=initTree(listOc,0); 方法,其中listOc是list集合,0是*别的父类,并用list集合接收,之后调用JSONArray.fromObject()方法,将list转换成JSONArray数组。

如果有好的方法,希望可以一起讨论,我的QQ:1509261494