经过一场麻烦的斗争,我几乎想出了如何将平面 json 文件转换为分层文件。这个函数不是我自己写的。我从下面的帖子中复制了它。
但现在的问题是,帖子中编写的函数只有 2 级层次结构。但我正在寻找 4 级层次结构。我试图覆盖我失败的功能但是。
用我正在尝试的代码。
变量数据 = [
{ "dep": "First Top", "name": "First child", "model": "value1", "size": "320" },
{ "dep": "First Top", "name": "First child", "model": "value2", "size": "320" },
{ "dep": "First Top", "name": "First child", "model": "value3", "size": "320" },
{ "dep": "First Top", "name": "First child", "model": "value4", "size": "320" },
{ "dep": "First Top", "name": "SECOND CHILD", "model": "value1", "size": "320" },
{ "dep": "First Top", "name": "SECOND CHILD", "model": "value2", "size": "320" },
{ "dep": "First Top", "name": "SECOND CHILD", "model": "value3", "size": "320" },
{ "dep": "First Top", "name": "SECOND CHILD", "model": "value4", "size": "320" },
{“dep”:“第二个顶部”,“名称”:“第一个孩子”,“模型”:“value1”,“大小”:“320”},
{“dep”:“第二个顶部”,“名称”:“第一个孩子”,“模型”:“value2”,“大小”:“320”},
{“dep”:“第二个顶部”,“名称”:“第一个孩子”,“模型”:“value3”,“大小”:“320”},
{“dep”:“第二个顶部”,“名称”:“第一个孩子”,“模型”:“value4”,“大小”:“320”},
{“dep”:“第二个顶部”,“名称”:“第二个孩子”,“模型”:“value1”,“大小”:“320”},
{“dep”:“第二个顶部”,“名称”:“第二个孩子”,“模型”:“value2”,“大小”:“320”},
{“dep”:“第二个顶部”,“名称”:“第二个孩子”,“模型”:“value3”,“大小”:“320”},
{“dep”:“第二个顶部”,“名称”:“第二个孩子”,“模型”:“value4”,“尺寸”:“320”},
{“dep”:“第三个顶部”,“名称”:“第一个孩子”,“模型”:“value2”,“大小”:“320”},
{“dep”:“第三个顶部”,“名称”:“第一个孩子”,“模型”:“value3”,“大小”:“320”},
{“dep”:“第三个顶部”,“名称”:“第一个孩子”,“模型”:“value4”,“大小”:“320”},
{“dep”:“第三个顶部”,“名称”:“第一个孩子”,“模型”:“value5”,“大小”:“320”},
{“dep”:“第三个顶部”,“名称”:“第二个孩子”,“模型”:“value1”,“大小”:“320”},
{“dep”:“第三个顶部”,“名称”:“第二个孩子”,“模型”:“value2”,“大小”:“320”},
{“dep”:“第三个顶部”,“名称”:“第二个孩子”,“模型”:“value3”,“大小”:“320”},
{“dep”:“第三个顶部”,“名称”:“第二个孩子”,“模型”:“value4”,“大小”:“320”}
]
var newData = {"name":"root", "children":{}}
data.forEach(函数(d){
if(typeof newData.children[d.dep] !== 'undefined') {
newData.children[d.dep].children.push(d)
} 别的 {
newData.children[d.dep] = {"name": d.dep, "children": [{"name": d.name, "children": [{"name": d.model, "size": d.size}]}]}
}
})
newData.children = Object.keys(newData.children).map(function (key) { return newData.children[key]; });
// 显示我们有什么
d3.select('body').append('pre')
.text(JSON.stringify(newData, null, ' '));
当前代码的输出
{
“名称”:“根”,
“孩子们”: [
{
"name": "第一顶",
“孩子们”: [
{
"name": "第一个孩子",
“孩子们”: [
{
“名称”:“值1”,
“尺寸”:“320”
}
]
},
{
"dep": "第一顶",
"name": "第一个孩子",
“模型”:“值2”,
“尺寸”:“320”
},
{
"dep": "第一顶",
"name": "第一个孩子",
“模型”:“值3”,
“尺寸”:“320”
},
{
"dep": "第一顶",
"name": "第一个孩子",
“模型”:“值4”,
“尺寸”:“320”
},
{
"dep": "第一顶",
"name": "第二个孩子",
“模型”:“值1”,
“尺寸”:“320”
},
{
"dep": "第一顶",
"name": "第二个孩子",
“模型”:“值2”,
“尺寸”:“320”
},
{
"dep": "第一顶",
"name": "第二个孩子",
“模型”:“值3”,
“尺寸”:“320”
},
{
"dep": "第一顶",
"name": "第二个孩子",
“模型”:“值4”,
“尺寸”:“320”
}
]
},
{
"name": "第二名",
“孩子们”: [
{
"name": "第一个孩子",
“孩子们”: [
{
“名称”:“值1”,
“尺寸”:“320”
}
]
},
{
"dep": "第二名",
"name": "第一个孩子",
“模型”:“值2”,
“尺寸”:“320”
},
{
"dep": "第二名",
"name": "第一个孩子",
“模型”:“值3”,
“尺寸”:“320”
},
{
"dep": "第二名",
"name": "第一个孩子",
“模型”:“值4”,
“尺寸”:“320”
},
{
"dep": "第二名",
"name": "第二个孩子",
“模型”:“值1”,
“尺寸”:“320”
},
{
"dep": "第二名",
"name": "第二个孩子",
“模型”:“值2”,
“尺寸”:“320”
},
{
"dep": "第二名",
"name": "第二个孩子",
“模型”:“值3”,
“尺寸”:“320”
},
{
"dep": "第二名",
"name": "第二个孩子",
“模型”:“值4”,
“尺寸”:“320”
}
]
},
{
"name": "第三名",
“孩子们”: [
{
"name": "第一个孩子",
“孩子们”: [
{
“名称”:“值2”,
“尺寸”:“320”
}
]
},
{
"dep": "第三顶",
"name": "第一个孩子",
“模型”:“值3”,
“尺寸”:“320”
},
{
"dep": "第三顶",
"name": "第一个孩子",
“模型”:“值4”,
“尺寸”:“320”
},
{
"dep": "第三顶",
"name": "第一个孩子",
“模型”:“值5”,
“尺寸”:“320”
},
{
"dep": "第三顶",
"name": "第二个孩子",
“模型”:“值1”,
“尺寸”:“320”
},
{
"dep": "第三顶",
"name": "第二个孩子",
“模型”:“值2”,
“尺寸”:“320”
},
{
"dep": "第三顶",
"name": "第二个孩子",
“模型”:“值3”,
“尺寸”:“320”
},
{
"dep": "第三顶",
"name": "第二个孩子",
“模型”:“值4”,
“尺寸”:“320”
}
]
}
]
}
所需的输出格式:
{
“名称”:“根”,
“孩子们”: [
{
"name": "第一顶",
“孩子们”: [
{
"name": "第一个孩子",
“孩子们”: [
{
“名称”:“值1”,
“尺寸”:“320”
},
{
“名称”:“值2”,
“尺寸”:“320”
},
{
“名称”:“值3”,
“尺寸”:“320”
},
{
“名称”:“值4”,
“尺寸”:“320”
}
]
},
{
"name": "第二个孩子",
“孩子们”: [
{
“名称”:“值1”,
“尺寸”:“320”
},
{
“名称”:“值2”,
“尺寸”:“320”
},
{
“名称”:“值3”,
“尺寸”:“320”
},
{
“名称”:“值4”,
“尺寸”:“320”
}
]
},
]
},
{
"name": "第二名",
“孩子们”: [
{
"name": "第一个孩子",
“孩子们”: [
{
“名称”:“值1”,
“尺寸”:“320”
},
{
“名称”:“值2”,
“尺寸”:“320”
},
{
“名称”:“值3”,
“尺寸”:“320”
},
{
“名称”:“值4”,
“尺寸”:“320”
}
]
},
{
"name": "第二个孩子",
“孩子们”: [
{
“名称”:“值1”,
“尺寸”:“320”
},
{
“名称”:“值2”,
“尺寸”:“320”
},
{
“名称”:“值3”,
“尺寸”:“320”
},
{
“名称”:“值4”,
“尺寸”:“320”
}
]
},
]
},
{
"name": "第三名",
“孩子们”: [
{
"name": "第一个孩子",
“孩子们”: [
{
“名称”:“值1”,
“尺寸”:“320”
},
{
“名称”:“值2”,
“尺寸”:“320”
},
{
“名称”:“值3”,
“尺寸”:“320”
},
{
“名称”:“值4”,
“尺寸”:“320”
}
]
},
{
"name": "第二个孩子",
“孩子们”: [
{
“名称”:“值1”,
“尺寸”:“320”
},
{
“名称”:“值2”,
“尺寸”:“320”
},
{
“名称”:“值3”,
“尺寸”:“320”
},
{
“名称”:“值4”,
“尺寸”:“320”
}
]
},
]
}
]
}
我从一个星期开始就头疼,但我一个人无法弄清楚。有人请修改函数以获取分层格式的数据,因为我已经更新了。
提前致谢!!