【发布时间】:2021-08-09 18:23:40
【问题描述】:
尝试解析以下格式的 JSON 以递归方式获取父子树,并将被处理以在 HTML 中显示可点击列表
var data = [
{
"name":"Level 1",
"sys_id":"3b8a6ea81bd034d0d1dcb9118b4bcb9a",
"order":"01"
},
{
"name":"L1-1",
"sys_id":"565b226c1bd034d0d1dcb9118b4bcbb2",
"order":"01.01"
},
{
"name":"Level 2",
"sys_id":"ca49eea01bd034d0d1dcb9118b4bcb17",
"order":"02"
},
{
"name":"L2-2",
"sys_id":"e699e2641bd034d0d1dcb9118b4bcb84",
"order":"02.02"
},
{
"name":"L2-2-1",
"sys_id":"15da66e81bd034d0d1dcb9118b4bcb1c",
"order":"02.02.01"
},
{
"name":"L2-2-1-1",
"sys_id":"5a2baa2c1bd034d0d1dcb9118b4bcb63",
"order":"02.02.01.01"
}
];
目前的功能是:
function createTreeView(data) {
var tree = [],
object = {},
parent,
child;
for (var i = 0; i < data.length; i++) {
parent = data[i];
object[parent.id] = parent;
object[parent.id]["children"] = [];
}
for (var id in object) {
if (object.hasOwnProperty(id)) {
child = object[id];
if (child.parentId && object[child["parentId"]]) {
object[child["parentId"]]["children"].push(child);
} else {
tree.push(child);
}
}
}
return tree;
}
我可以从您那里获得帮助,如何根据 JSON 的顺序正确显示列表吗?非常感谢。
【问题讨论】:
-
您的预期输出是什么?你目前的输出是多少?
-
预期输出是解析当前 JSON 并在 HTML 中显示的函数。目前有:function CreateUlTreeView(items, parent){ var ul = document.createElement("ul"); if (parent) parent.appendChild(ul); items.forEach(function(x) { var li = document.createElement("li"); var text = document.createElement("span"); text.innerHTML = x.name; li.appendChild(text); if ( x.children && x.children.length>0) CreateUlTreeView(x.children, li); ul.append(li); });返回 ul; } var root = createTreeView(locations);
-
请更新问题以包含您尝试实现的 HTML 输出示例。以及您当前获得的当前 HTML 输出。
标签: javascript html json parsing tree