javascript - 求一个js解析一个data方法
大家讲道理
大家讲道理 2017-04-11 13:18:06
[JavaScript讨论组]

有这样一个原始JSON,

var testJson=[
          {"db":"wonder","tab":"jinxingz","schema":"aa"},
          {"tab":"kuail","db":"wonder","schema":"aa"},
          {"db":"wonder","schema":"bb","tab":"dfasd"},
          {"db":"soft","schema":"","tab":"letian"},
          {"db":"soft","schema":"okd","tab":"helin"}
          ];

要转化成一个具有层级关系的数据,层级关系(即父子关系)规则为"db">"schema">"tab"
现在要转换为如下格式:

var testJsonRes=[{
            "key":"db",
            "val":"wonder",
            "children":[{
                "key":"schema",
                "val":"aa",
                "children":[{
                    "key":"tab",
                    "val":"jinxingz"
                },{
                    "key":"tab",
                    "val":"kuail"
                }]
            },{
                "key":"schema",
                "val":"aa",
                "children":[{
                    "key":"tab",
                    "val":"dfasd"
                }]
            }]
        },{
            "key":"db",
            "val":"soft",
            "children":[{
                "key":"tab",
                "val":"aa",
                "children":[{
                    "key":"tab",
                    "val":"letian"
                },{
                    "key":"schema",
                    "val":"okd",
                    "children":[{
                        "key":"tab",
                        "val":"helin"
                    }]
                }]
            }]
        }];

注意如果某一级key的val为空{"db":"soft","schema":"","tab":"letian"},,则直接调到下一级,求一个转换的方法。谢谢了

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(1)
怪我咯

帮你做出来了,没加注释,不懂的可以问我。☺

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>解析Data</title>
</head>
<body>

<script type="text/javascript">

    var myData = [{"db": "db1", "schema": "schema1", "tab": "123"},
        {"db": "db1", "schema": "schema1", "tab": "123123"},
        {"db": "db1", "schema": "schema2", "tab": "456"},
        {"db": "db2", "schema": "schema3", "tab": "789"},
        {"db": "db2", "schema": "schema4", "tab": "aaa"},
        {"db": "db2", "schema": "schema5", "tab": "bbb"},
        {"db": "db3", "schema": "schema6", "tab": "ccc"},
        {"db": "db3", "schema": "schema7", "tab": "ddd"}]

    var nowData = new Array;

    for (var i in myData) {
        var db = myData[i];
        if (!(nowData[db.db] instanceof Array)) {
            nowData[db.db] = new Array;
        }
        if (!(nowData[db.db][db.schema] instanceof Array)) {
            nowData[db.db][db.schema] = new Array;
        }
        nowData[db.db][db.schema].push(db.tab);
    }

    console.log("nowData:", nowData);

    var testJsonRes = [];

    for (var i in nowData) {
        var now = {
            "key": "db",
            "val": i,
            "children": []
        };
        for (var k in nowData[i]) {
            now.children.push({
                "key": "schema",
                "val": k,
                "children": []

            });
            var num = 0;
            for (var y in nowData[i][k]) {
                now.children[num].children.push({
                    "key": "tab",
                    "val": nowData[i][k][y]
                });
            }
            num++;
        }

        testJsonRes.push(now);
    }

    console.log("testJsonRes:", testJsonRes);

</script>

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

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