dhtmlxtree json 格式一次性加载

补充:也许应该采用linkedList,涉及到多次的修改,若用ArrayList 则最好设置ensureCapacity()

 

public class TreeUtil {
	
	public static String nodeList2Json(String pid,List<TreeNode> list){
		String json="{id:0,"+createTreeNodeJson(pid,list)+"}";
		return json;
	}
	
	private static String createTreeNodeJson(String pid,List<TreeNode> nodelist){
		List<TreeNode> list=_getByPid(pid,nodelist);
		StringBuilder strBulider=new StringBuilder("item:[");
		for(int i=0;i<list.size();i++){
			TreeNode treeNode=list.get(i);
			strBulider.append(node2Json(treeNode));
			if(treeNode.isHasChild()){
				strBulider.append(createTreeNodeJson(treeNode.getId(),nodelist)+"}");
			}
			if(i!=list.size()-1)
				strBulider.append(",");
		}
		strBulider.append("]");
		return strBulider.toString();
	}
	
	
	
	private static String node2Json(TreeNode node){
		StringBuilder strBulider=new StringBuilder("{");
		strBulider.append("id:\"").append(node.getId()).append("\",text:\"").append(node.getText())
			.append("\",im0:\"").append(node.getIm0()).append("\",im1:\"").append(node.getIm1()).append("\",im2:\"").append(node.getIm2()).append("\"");
		if(node.isOpen())
			strBulider.append(",open:1");
		if(node.isCall())
			strBulider.append(",call:1");
		if(node.isSelect())
			strBulider.append(",select:1");
		if(node.isNocheckbox())
			strBulider.append(",nocheckbox:1");
		if(node.isDisabled())
			strBulider.append(",disabled:1");
		if(!StringUtils.isEmpty(node.getUserdata()))
			strBulider.append(",userdata:").append(node.getUserdata());
		if(node.isHasChild())
			strBulider.append(",child:1,");
		else
			strBulider.append(",child:0}");
		return strBulider.toString();
	}
	
	private static List<TreeNode> _getByPid(String pid,List<TreeNode> list){
		List<TreeNode> treeNodeList=new ArrayList<TreeNode>();
		if(StringUtils.isBlank(pid)){
			for(int i=0;i<list.size();i++){
				TreeNode node=list.get(i);
				if(StringUtils.isEmpty(node.getParentId()))
					treeNodeList.add(node);
			}
			return treeNodeList;
		}
		
		for(int i=0;i<list.size();i++){
			TreeNode node=list.get(i);
			if(pid.equals(node.getParentId()))
				treeNodeList.add(node);
		}
		list.removeAll(treeNodeList);
		return treeNodeList;
	}
}

 

 

treeNode 类

 

private String id;
	
	private String text;
	
	private String im0;
	
	private String im1;
	
	private String im2;
	
	private int orderNo;
	
	private String userdata;
	
	private boolean isSelect=false; //是否选中
    private boolean isOpen=false; //是否打开
    private boolean isCall=false; //是否要调用单击事件
    private boolean isChecked=false;//如果是checked类型,默认是否选中
    private boolean hasChild = false; //判断该节点是否有子节点    
    private boolean nocheckbox = false; //在整棵树都设置成checkbox时,设置该节点是否带有复选框
    private boolean disabled = false; //是否可以对复选框进行操作:1为不行,0为行

	private String parentId;

你可能感兴趣的:(json)