java 将数据库中的数据转化为easyUI treegrid json格式

来源:互联网 发布:国际网络加速器 编辑:程序博客网 时间:2024/05/18 00:59

最近一直和json打交道,对于树形数据我一般都是递归操作。

思路: 

  /**
     * 需求:将数据库中数据转化为json tree数据格式
     * 步骤:1.将数据通过id找到父子关系,建立tree
     *         2.将tree转换为json格式
     * 需要写两个递归函数
     */


代码:

public static Map<Column_manager,Map> inflateTreeMap(Map<Column_manager,Map> map,Column_manager cm){if(cm.getPid()==-1){//根节点map.put(cm, null);return map;}else{for(Entry<Column_manager,Map> entry:map.entrySet()){if(entry.getValue()!=null){ //如果有子节点if(entry.getKey().getId()==cm.getPid()){//本节点是否就是寻找的节点entry.getValue().put(cm, null);break;}else{map = inflateTreeMap(entry.getValue(),cm);}}else{//如果没有子节点if(entry.getKey().getId()==cm.getPid()){Map<Column_manager,Map> m = new HashMap<Column_manager,Map>();m.put(cm, null);entry.setValue(m);break;}}}return map;}}public static StringBuffer treeToJson(Map<Column_manager,Map> map,StringBuffer sb){sb.append("[");for(Entry<Column_manager,Map> entry : map.entrySet()){if(entry.getValue()!=null){//有下级节点sb.append("{");sb.append("\"id\":");sb.append(entry.getKey().getId());sb.append(",");sb.append("\"name\":");sb.append("\""+entry.getKey().getColumnName()+"\"");sb.append(",");sb.append("\"person\":");sb.append(entry.getKey().getCheckId());sb.append(",");sb.append("\"children\":");sb = treeToJson(entry.getValue(),sb);sb.append("},");}else{sb.append("{");sb.append("\"id\":");sb.append(entry.getKey().getId());sb.append(",");sb.append("\"name\":");sb.append("\""+entry.getKey().getColumnName()+"\"");sb.append(",");sb.append("\"person\":");sb.append(entry.getKey().getCheckId());sb.append("},");}}sb.append("]");int index=0;int from=0;while((index = sb.indexOf("},",from))!=-1){ //处理掉多余的,if(sb.substring(index+2, index+3).equals("]")){sb = sb.replace(index+1, index+2, "");}from+=index;}return sb;}

转换后的json数据:

[{"id":22,"name":"aaa","person":2,"children":[{"id":23,"name":"aa33a","person":2}]},{"id":19,"name":"aaa","person":2,"children":[{"id":20,"name":"aaa","person":2},{"id":21,"name":"aa2a","person":2}]}]


阅读全文
0 0