把list数据转化成easy ui树标签能够识别的json字符串

23 篇文章 0 订阅
7 篇文章 0 订阅

首先list的object对象必须是包含父id属性的对象,如本文的function,下面就给大家分享怎样实现。

function类的代码如下:

/**
 * 
 * @ClassName: Function
 * @Description: 权限功能树
 * @date 2015年9月16日 上午11:07:32
 * 
 */
public class Function {
	private Long id;// 主键;
	private Long pId;// 父ID;
	private String name;// 功能名称
	private String url;// 路径

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public Long getpId() {
		return pId;
	}

	public void setpId(Long pId) {
		this.pId = pId;
	}

	public String getName() {
		return name;
	}

	public Function() {
		super();
		// TODO Auto-generated constructor stub
	}

	public void setName(String name) {
		this.name = name;
	}

	public Function(Long id, Long pId, String name, String url) {
		super();
		this.id = id;
		this.pId = pId;
		this.name = name;
		this.url = url;
	}

	public String getUrl() {
		return url;
	}

	public void setUrl(String url) {
		this.url = url;
	}
}
接下来,定义满足要求的树形结构的dto类,如下代码:

import java.util.List;

/**
 * 
 * @ClassName: TreeDto
 * @Description: 树形结果dto(满足easy ui树形结构的dto)
 * @author yangbo 605051929@qq.com
 * @date 2015年9月16日 上午10:57:21
 * 
 */
public class TreeDto {
	private Long id;// id编号
	private String text;// 内容
	private List<TreeDto> children;// 子节点
	private String attribute1;// 扩展内容1
	private String attribute2;// 扩展内容2

	public TreeDto(Long id, String text, List<TreeDto> children,
			String attribute1, String attribute2) {
		super();
		this.id = id;
		this.text = text;
		this.children = children;
		this.attribute1 = attribute1;
		this.attribute2 = attribute2;
	}

	public TreeDto(Long id, String text, List<TreeDto> children) {
		super();
		this.id = id;
		this.text = text;
		this.children = children;
		this.attribute1 = "";
		this.attribute2 = "";
	}

	public TreeDto() {
		super();
		// TODO Auto-generated constructor stub
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getText() {
		return text;
	}

	public void setText(String text) {
		this.text = text;
	}

	public List<TreeDto> getChildren() {
		return children;
	}

	public void setChildren(List<TreeDto> children) {
		this.children = children;
	}

	public String getAttribute1() {
		return attribute1;
	}

	public void setAttribute1(String attribute1) {
		this.attribute1 = attribute1;
	}

	public String getAttribute2() {
		return attribute2;
	}

	public void setAttribute2(String attribute2) {
		this.attribute2 = attribute2;
	}

	@Override
	public String toString() {
		StringBuffer sb = new StringBuffer("{\"id\":" + id + ", \"text\":\""
				+ text + "\",\"attributes\":{\"attribute1\":\"" + attribute1
				+ "\",\"attribute2\":\"" + attribute2 + "\"}");

		if (children != null && children.size() > 0) {
			sb.append(",\"children\":" + children + "");
		}

		sb.append("}");
		return sb.toString();
	}
}

接下来,我们定义test类来实现把list的数据转化成满足要求的树形结构字符串,代码如下:

public class Test {
	public static void main(String[] argv) {
		Function fun = new Function();
		fun.setId(0000l);
		fun.setName("000000");
		fun.setpId(null);
		fun.setUrl("URL0");
		String results=getAgentTreeData(fun, init());
		System.out.print(results);
	}
	/**
	 * 
	 * @Description:获取树形格式的字符串
	 * @param pid
	 * @return
	 * 
	 */
	public static String getAgentTreeData(Function function, List<Function> functions) {
		TreeDto dtd = new TreeDto();
		dtd.setId(function.getId());
		dtd.setText(function.getName());
		dtd.setAttribute1(function.getUrl());
		dtd.setChildren(dtoToTreeDto(function.getId(), functions));
		StringBuffer sb = new StringBuffer("[");
		sb.append(dtd.toString());
		sb.append("]");
		String result = sb.toString();
		result = result.replaceAll("\\{\\},", "");
		return result;
	}

	/**
	 * 
	 * @Description: 把dto转化成树形结构Dto
	 * @param pid
	 * @param distributions
	 * @return
	 * 
	 */
	public static List<TreeDto> dtoToTreeDto(Long pid,
			List<Function> functions) {
		List<TreeDto> dtds = new ArrayList<TreeDto>();
		for (Function entity : functions) {
			if (pid.equals(entity.getpId())) {
				TreeDto dtd = new TreeDto();
				dtd.setId(entity.getId());
				dtd.setText(entity.getName());
				dtd.setAttribute1(entity.getUrl());
				dtd.setChildren(dtoToTreeDto(entity.getId(), functions));
				dtds.add(dtd);
			}
		}
		return dtds;
	}
<span style="white-space:pre">	</span>//定义初始化数据
	public static List<Function> init() {
		List<Function> functions = new LinkedList<Function>();
		Function fun0 = new Function();
		fun0.setId(00001l);
		fun0.setName("000000");
		fun0.setpId(0000l);
		fun0.setUrl("URL0");
		functions.add(fun0);
		Function fun1 = new Function();
		fun1.setId(111111l);
		fun1.setName("1111111");
		fun1.setpId(0000l);
		fun1.setUrl("URL1");
		functions.add(fun1);
		Function fun2 = new Function();
		fun2.setId(222222l);
		fun2.setName("222222222222222");
		fun2.setpId(0000l);
		fun2.setUrl("URL2");
		functions.add(fun2);
		Function fun3 = new Function();
		fun3.setId(33333l);
		fun3.setName("333333333333");
		fun3.setpId(111111l);
		fun3.setUrl("URL3");
		functions.add(fun3);
		Function fun4 = new Function();
		fun4.setId(4444444444l);
		fun4.setName("4444444444");
		fun4.setpId(222222l);
		fun4.setUrl("URL4");
		functions.add(fun4);
		Function fun5 = new Function();
		fun5.setId(555555555l);
		fun5.setName("555555555555");
		fun5.setpId(222222l);
		fun5.setUrl("URL5");
		functions.add(fun5);
		
		return functions;
		
	}
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值