gpt4 book ai didi

javascript - Node.js - 将平面 json 转换为不带 'parent' ,'child' 属性的分层 json

转载 作者:行者123 更新时间:2023-11-30 12:24:31 25 4
gpt4 key购买 nike

我想从我的 sql 查询构建一个分层数据结构。关注this post后为了从平面对象构建分层 JSON 对象,我尝试在对象级别创建具有更多属性的 4 级层次结构,但不需要子属性。

我该怎么做?

这是我的 JavaScript (NodeJS) 代码:

var levels = ["counties_id","district_id", "municipalities_id", "institutes_id"];
data.forEach(function(d){
var depthCursor = newData.counties;
levels.forEach(function( property, depth ){
var index;
depthCursor.forEach(function(child,i){
if ( d[property] == child.counties_id ) index = i;
});
if ( isNaN(index) ) {
var propname = levels[depth];
var obj = {};
obj[propname] = d[property];
obj["children"] = [];
depthCursor.push(obj);
index = depthCursor.length - 1;
}
depthCursor = depthCursor[index].children;
if ( depth === levels.length - 1 ) {
depthCursor.push({ id : d.id, name : d.name, name_H : d.name_h });
}
});
});

第一级没问题,因为这个等式检查相同的第一级属性:

if ( d[property] == child.counties_id ) index = i;

如何检查第 2、3 和 4 级相同的情况?

这是不断尝试的扁平物体:

[
{
"counties_h":"Megye 1",
"counties_en":"Coun 1",
"counties_id":"1",
"district_h":"Korz 1",
"district_en":"Dist 1",
"district_id":"101",
"municipalities_h":"Onk 1",
"municipalities_en":"Mun 1",
"municipalities_id":"asdf",
"institutes_h":"Int 1",
"institites_en":"Inst 1",
"institutes_id":"1"
},
{
"counties_h":"Megye 1",
"counties_en":"Coun 1",
"counties_id":"1",
"district_h":"Korz 1",
"district_en":"Dist 1",
"district_id":"101",
"municipalities_h":"Onk 1",
"municipalities_en":"Mun 1",
"municipalities_id":"asdf",
"institutes_h":"Int 2",
"institites_en":"Inst 2",
"institutes_id":"2"
},
{
"counties_h":"Megye 1",
"counties_en":"Coun 1",
"counties_id":"1",
"district_h":"Korz 1",
"district_en":"Dist 1",
"district_id":"101",
"municipalities_h":"Onk 2",
"municipalities_en":"Mun 2",
"municipalities_id":"sdfg",
"institutes_h":"Int 1",
"institites_en":"Inst 1",
"institutes_id":"1"
},
{
"counties_h":"Megye 1",
"counties_en":"Coun 1",
"counties_id":"1",
"district_h":"Korz 1",
"district_en":"Dist 1",
"district_id":"101",
"municipalities_h":"Onk 2",
"municipalities_en":"Mun 2",
"municipalities_id":"sdfg",
"institutes_h":"Int 2",
"institites_en":"Inst 2",
"institutes_id":"2"
},
{
"counties_h":"Megye 1",
"counties_en":"Coun 1",
"counties_id":"1",
"district_h":"Korz 2",
"district_en":"Dist 2",
"district_id":"102",
"municipalities_h":"Onk 1",
"municipalities_en":"Mun 1",
"municipalities_id":"dfgh",
"institutes_h":"Int 1",
"institites_en":"Inst 1",
"institutes_id":"1"
},
{
"counties_h":"Megye 1",
"counties_en":"Coun 1",
"counties_id":"1",
"district_h":"Korz 2",
"district_en":"Dist 2",
"district_id":"102",
"municipalities_h":"Onk 1",
"municipalities_en":"Mun 1",
"municipalities_id":"dfgh",
"institutes_h":"Int 2",
"institites_en":"Inst 2",
"institutes_id":"2"
},
{
"counties_h":"Megye 2",
"counties_en":"Coun 2",
"counties_id":"2",
"district_h":"Korz 2",
"district_en":"Dist 2",
"district_id":"202",
"municipalities_h":"Onk 1",
"municipalities_en":"Mun 1",
"municipalities_id":"fghj",
"institutes_h":"Int 1",
"institites_en":"Inst 1",
"institutes_id":"1"
},
{
"counties_h":"Megye 2",
"counties_en":"Coun 2",
"counties_id":"2",
"district_h":"Korz 2",
"district_en":"Dist 2",
"district_id":"202",
"municipalities_h":"Onk 1",
"municipalities_en":"Mun 1",
"municipalities_id":"fghj",
"institutes_h":"Int 2",
"institites_en":"Inst 2",
"institutes_id":"2"
}
]

我当前代码的输出:

{
"counties":[
{
"counties_id":"1",
"children":[
{
"district_id":"101",
"children":[
{
"municipalities_id":"asdf",
"children":[
{
"institutes_id":"1",
"children":[
{

}
]
}
]
}
]
},
{
"district_id":"101",
"children":[
{
"municipalities_id":"asdf",
"children":[
{
"institutes_id":"2",
"children":[
{

}
]
}
]
}
]
},
{
"district_id":"101",
"children":[
{
"municipalities_id":"sdfg",
"children":[
{
"institutes_id":"1",
"children":[
{

}
]
}
]
}
]
},
{
"district_id":"101",
"children":[
{
"municipalities_id":"sdfg",
"children":[
{
"institutes_id":"2",
"children":[
{

}
]
}
]
}
]
},
{
"district_id":"102",
"children":[
{
"municipalities_id":"dfgh",
"children":[
{
"institutes_id":"1",
"children":[
{

}
]
}
]
}
]
},
{
"district_id":"102",
"children":[
{
"municipalities_id":"dfgh",
"children":[
{
"institutes_id":"2",
"children":[
{

}
]
}
]
}
]
}
]
},
{
"counties_id":"2",
"children":[
{
"district_id":"202",
"children":[
{
"municipalities_id":"fghj",
"children":[
{
"institutes_id":"1",
"children":[
{

}
]
}
]
}
]
},
{
"district_id":"202",
"children":[
{
"municipalities_id":"fghj",
"children":[
{
"institutes_id":"2",
"children":[
{

}
]
}
]
}
]
}
]
}
]
}

这就是我想要的:

{
"counties":[
{
"counties_id":"1",
"counties_h":"Megye 1",
"counties_en":"Coun 1",
"districts":[
{
"district_id":"101",
"district_h":"Korz 1",
"district_en":"Dist 1",
"municipalities":[
{
"municipalities_id":"asdf",
"municipalities_h":"Onk 1",
"municipalities_en":"Mun 1",
"institutes":[
{
"institutes_id":"1",
"institutes_h":"Int 1",
"institutes_en":"Inst 1"
},
{
"institutes_id":"2",
"institutes_h":"Int 2",
"institutes_en":"Inst 2"
}
]
},
{
"municipalities_id":"sdfg",
"municipalities_h":"Onk 2",
"municipalities_en":"Mun 2",
"institutes":[
{
"institutes_id":"3",
"institutes_h":"Int 1",
"institutes_en":"Inst 1"
},
{
"institutes_id":"4",
"institutes_h":"Int 2",
"institutes_en":"Inst 2"
}
]
}
]
},
{
"district_id":"102",
"district_h":"Korz 2",
"district_en":"Dist 2",
"municipalities":[
{
"municipalities_id":"dfgh",
"municipalities_h":"Onk 1",
"municipalities_en":"Mun 1",
"institutes":[
{
"institutes_id":"5",
"institutes_h":"Int 1",
"institutes_en":"Inst 1"
},
{
"institutes_id":"6",
"institutes_h":"Int 2",
"institutes_en":"Inst 2"
}
]
}
]
}
]
},
{
"counties_id":"2",
"counties_h":"Megye 2",
"counties_en":"Coun 2",
"districts":[
{
"district_id":"202",
"district_h":"Korz 2",
"district_en":"Dist 2",
"municipalities":[
{
"municipalities_id":"fghj",
"municipalities_h":"Onk 1",
"municipalities_en":"Mun 1",
"institutes":[
{
"institutes_id":"7",
"institutes_h":"Int 1",
"institutes_en":"Inst 1"
},
{
"institutes_id":"8",
"institutes_h":"Int 2",
"institutes_en":"Inst 2"
}
]
}
]
}
]
}
]
}

最佳答案

查看 shape-json module在 NPM 上。

它会让你的生活变得更简单。

关于javascript - Node.js - 将平面 json 转换为不带 'parent' ,'child' 属性的分层 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29921218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com