table:
id name parentid
1 name1 null
2 name2 1
3 name3 1
4 name4 2
5 name5 4
6 name6 3
. . .
. . .
. . .
我需要的json:
[{id:1,text:'name1',childern:[{
id:2,text:'name2',childern:[{
id:4,text:'name4',childern:[{
id:5,name:'name5'
}]
}]
},{
id:3,text:'name3',childern:[{
id:6,text:'name6'
}]
}]
}]
上面只是部分实现,求教如何得到完整的json。
/**
* 递归拼凑菜单结构
* @param menuBean
* @param list
/
public void recursionFn(MenuBean menuBean, List list, boolean isFolder){
if(hasChild(menuBean, list)){
menuJsonFormat.append("{id:");
menuJsonFormat.append(String.valueOf(menuBean.getMenu_id()));
menuJsonFormat.append(",firstId:");//idParent parentId
menuJsonFormat.append(String.valueOf(menuBean.getParent_id()));
menuJsonFormat.append(",text:");
menuJsonFormat.append("'"+menuBean.getMenu_name()+"'");
if(menuBean.getMenu_url() != null){
menuJsonFormat.append(",url:");
menuJsonFormat.append("'"+menuBean.getMenu_url()+"'");
}
menuJsonFormat.append(",children:[");
List childList = getChildList(menuBean, list);
for(MenuBean bean : childList){
recursionFn(bean, list, isFolder);
}
menuJsonFormat.append("]},");
}else{
menuJsonFormat.append("{id:");
menuJsonFormat.append(String.valueOf(menuBean.getMenu_id()));
menuJsonFormat.append(",firstId:");
menuJsonFormat.append(String.valueOf(menuBean.getParent_id()));
menuJsonFormat.append(",text:");
menuJsonFormat.append("'"+menuBean.getMenu_name()+"'");
if(menuBean.getMenu_url() != null){
menuJsonFormat.append(",url:");
menuJsonFormat.append("'"+menuBean.getMenu_url()+"'");
}
if(!isFolder)
menuJsonFormat.append(",leaf:true},");
else
menuJsonFormat.append("},");
}
}
/*
* 判断是否有子节点
* @param menuBean
* @param list
* @return
/
public boolean hasChild(MenuBean menuBean, List list) { // 判断是否有子节点
return getChildList(menuBean,list).size() > 0 ? true : false;
}
/*
* 根据MenuBean menuBean中的menu_id来获取子菜单list
* @param menuBean
* @param list
* @return
/
public List getChildList(MenuBean menuBean, List list){
List childList = new ArrayList();
for(MenuBean bean : list){
int menu_id = menuBean.getMenu_id();
int parent_id = bean.getParent_id();
if(menu_id == parent_id)
childList.add(bean);
}
return childList;
}
/*
* 生成最终的Json格式
* @param returnStr
* @return
*/
public String modifyStr(String returnStr) {// 修饰一下才能满足Extjs的Json格式
return ("[" + returnStr + "]").replaceAll(",]", "]");
}
通҉过҉递҉归҉的҉方҉式҉可҉以҉实҉现҉