如何将文件夹结构 JSON 字符串转换为 JS 数组。我有以下 JSON 字符串
[{ "Name": "A", "ParentName": "Config", "Type": "default" },
{ "Name": "SubA", "ParentName": "A", "Type": "default" },
{ "Name": "SubAFile", "ParentName": "SubA", "Type": "file" },
{ "Name": "B", "ParentName": "Config", "Type": "default" },
{ "Name": "C", "ParentName": "Config", "Type": "default" }]
我想用以下格式制作 JS Array 对象
var NewStr = [{
"name": 'A',
"id": 'A',
"icon": 'fa fa-folder',
"items": [{
"title": "A",
"icon": "fa fa-folder",
"id": "A",
"items": [{
"name": "subA",
"icon": "fa fa-folder",
"id": "subA",
"items": [{
"title": "SubA",
"icon": "fa fa-folder",
"id": "SubA",
"items": [{
"name": "SubAFile",
"icon": "fa fa-file"
}]
}]
}]
}]
}, {
"name": 'B',
"id": 'b',
"icon": "fa fa-folder"
}, {
"name": 'C',
"id": 'C',
"icon": "fa fa-folder"
}];
注意:我添加的 ParentName 是为了标识文件夹结构的层次结构。 ID 将与姓名相同。
对此有什么建议吗?
谢谢..
最佳答案
首次使用JSON.parse
用于从有效的 JSON 生成对象字符串。
The
JSON.parse()
method parses a JSON string, constructing the JavaScript value or object described by the string. An optional reviver function can be provided to perform a transformation on the resulting object before it is returned.
然后,您可以使用迭代方法生成树,创建一个新对象,该新对象具有引用插入或引用的父对象所需的属性,使用临时对象。
这也适用于未排序和嵌套的项目。
var data = [{ Name: "A", ParentName: "Config", Type: "default" }, { Name: "SubA", ParentName: "A", Type: "default" }, { Name: "SubAFile", ParentName: "SubA", Type: "file" }, { Name: "B", ParentName: "Config", Type: "default" }, { Name: "C", ParentName: "Config", Type: "default" }],
tree = function (data, root) {
var r = [], o = {};
data.forEach(function (a) {
var temp = { name: a.Name, icon: a.Type === 'file' ? 'fa fa-file' : 'fa fa-folder' };
if (o[a.Name] && o[a.Name].items) {
temp.items = o[a.Name].items;
}
o[a.Name] = temp;
if (a.ParentName === root) {
r.push(temp);
} else {
o[a.ParentName] = o[a.ParentName] || {};
o[a.ParentName].items = o[a.ParentName].items || [];
o[a.ParentName].items.push(temp);
}
});
return r;
}(data, 'Config');
console.log(tree);
.as-console-wrapper { max-height: 100% !important; top: 0; }
关于javascript - JSON 字符串转 JS 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41648536/