javascript - 求一个js解析一个data方法
本文介绍了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屋!
查看全文