扁形数据结构
[
{id:1,pid:2,text:你好},
{id:2,pid:3,text:你好}
]
转换为树型json结构
[{
“id”:1,
“text”:”My Documents”,
“children”:[{
“id”:11,
“text”:”Photos”,
“state”:”closed”,
“children”:[{
“id”:111,
“text”:”Friend”
},{
“id”:112,
“text”:”Wife”
},{
“id”:113,
“text”:”Company”
}]
}]
只是举例数据结构的格式,与数据无关定义树型model实体类
/** ***************************** * @作者 xFei * <p> * @创建时间 2016年8月17日下午2:15:52 * <p> * @内容摘要 树型实体类 ****************************** */
public class TreeEntity {
private String id; //数据id
private String pid;//父节点
private String text;//数据neirong
/** * id get方法 * @return id */
public String getId()
{
return id;
}
/** * id set方法 * @param id */
public void setId(String id)
{
this.id = id;
}
/** * pid get方法 * @return pid */
public String getPid()
{
return pid;
}
/** * pid set方法 * @param pid */
public void setPid(String pid)
{
this.pid = pid;
}
/** * text get方法 * @return text */
public String getText()
{
return text;
}
/** * text set方法 * @param text */
public void setText(String text)
{
this.text = text;
}
/* * 重写TODO */
@Override
public String toString()
{
return "TreeEntity[id=" + id + ", pid=" + pid + ", text=" + text
+ "]";
}
}
从数据库查询到的树型数据封装到树型实体类的List中,然后将数据字符串拼接成扁形数据形式
数据拼接为扁形数据:
//数据拼接
List<TreeEntity > = jdbc.query(sql);//从数据库查询数据
StringBuffer json = new StringBuffer();
json.append("[");
for (TreeEntity course:treelist)
{
json.append("{id:'"+course.getId()+"',pid:'"+course.getPid()+"',text:'"+course.getText()+"'},");
}
json.deleteCharAt(json.lastIndexOf(","));
json.append("];");//去掉最后一个逗号
System.out.println(json.toString());//打印
拼接后的json数据格式:
[
{id:1,pid:2,text:你好},
{id:2,pid:3,text:你好}
]
将扁形json数据返回到前台,用js拼接为树形结构
//扁形数据转树型数据js方法
//data为后台返回的扁形数据json
var jsonDataTree = transData(eval(data), 'id', 'pid',
'children');
function transData(a, idStr, pidStr, chindrenStr)
{
var r = [], hash =
{}, id = idStr, pid = pidStr, children = chindrenStr, i = 0, j = 0, len = a.length;
for (; i < len; i++)
{
hash[a[i][id]] = a[i];
}
for (; j < len; j++)
{
var aVal = a[j], hashVP = hash[aVal[pid]];
if (hashVP)
{
!hashVP[children] && (hashVP[children] = []);
hashVP[children].push(aVal);
} else
{
r.push(aVal);
}
}
return r;
}
转换后的树型数据格式:
[{
“id”:1,
“text”:”My Documents”,
“children”:[{
“id”:11,
“text”:”Photos”,
“state”:”closed”,
“children”:[{
“id”:111,
“text”:”Friend”
},{
“id”:112,
“text”:”Wife”
},{
“id”:113,
“text”:”Company”
}]
}]
转换后的树型数据json就可以用easyui的tree组件加载