javascript - 求一个js解析一个data方法

查看:107
本文介绍了javascript - 求一个js解析一个data方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

有这样一个原始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"},,则直接调到下一级,求一个转换的方法。谢谢了

解决方案

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

<!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>

这篇关于javascript - 求一个js解析一个data方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆