javascript - js怎样将获取json转换为树形结构
PHPz
PHPz 2017-04-10 15:39:31
[JavaScript讨论组]

比如这样一段json

{
    "name": "1级菜单1",
    "link": "###",
    "isleaf": false,
    "level": 0,
    "children": [
        {
            "name": "2级菜单1",
            "link": "###",
            "isleaf": false,
            "level": 1,
            "children": [
                {
                    "name": "3级菜单1",
                    "link": "###",
                    "isleaf": true,
                    "level": 2,
                    "children": null
                },
                {
                    "name": "3级菜单2",
                    "link": "###",
                    "isleaf": true,
                    "level": 2,
                    "children": null
                }
            ]
        },
        {
            "name": "2级菜单2",
            "link": "###",
            "isleaf": false,
            "level": 1,
            "children": [
                {
                    "name": "3级菜单3",
                    "link": "###",
                    "isleaf": true,
                    "level": 2,
                    "children": null
                }
            ]
        }
    ]
}

我怎样把他转换成

<p>
    <a href="###">一级菜单</a>
    <ul>
        <li>
            <a>2级菜单1</a>
            <ul>
                <li><a href="###">3级菜单1</a></li>
                <li><a href="###">3级菜单2</a></li>
            </ul>
        </li>
        <li>
            <a href="###">2级菜单2</a>
            .......
        </li>
    </ul>
</p>
PHPz
PHPz

学习是最好的投资!

全部回复(3)
伊谢尔伦

下面的代码render是主函数,用来render你提供的json数据,它调用了renderMenu函数。

javascriptfunction renderMenu(menu, parent) {
    var el = $('<a href="' + menu.link  +'">' + menu.name + '</a>');
    $(parent).append(el);
    if (menu.isleaf) {
        return parent;
    }

    var ul = $('<ul/>');
    for (var i = 0; i < menu.children.length; ++i) {
        var li = $('<li/>');
        renderMenu(menu.children[i], li);
        ul.append(li);
    }

    $(parent).append(ul);
    return parent;
}

function render(json) {
    var p = $('

<p/>

');
    return renderMenu(json, p);
}

var json = // 你的那段json代码
var menu = render(json);

在浏览器中检查menu显示如下:

如果您觉得回答有帮助,就点个赞呗:-)

伊谢尔伦

http://stackoverflow.com/questions/8553539/jquery-json-looping-through...

PHP中文网

建议下载个jQuery EASYUI的API里面有关于树的解释,很清楚的
http://www.cnblogs.com/Philoo/archive/2011/11/17/jeasyui_api_index.htm...

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号