weixin_42399557 2010-09-17 11:25
浏览 237
已采纳

求无限级树的json实现

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。

  • 写回答

2条回答 默认 最新

  • camel0104 2010-09-17 14:30
    关注

    /**
    * 递归拼凑菜单结构
    * @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(",]", "]");

    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)
  • ¥65 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误