list集合转换成jsonArray树(java后台)
这是数据库中要查询的表
首先创建个实体类OrderEntity,OrderEntity实体类中属性加入List<OrderEntity> childrens,加个toString()方法
创建两个方法
/**
* 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