数据库查询出的扁形数据转树型结构数据

扁形数据结构
[
{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组件加载

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值