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

最近一直和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}]}]


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值