数据设置为 json with group
data set to json with group
我正在开发一个 angular + nodejs 应用程序,我需要一些来自 sql 的 json 格式的数据。我能够在 json 中获取数据,但我需要将数据以类似树的方式进行分组。有没有办法在 sql、服务器或前端级别执行此操作?
我在table
中的数据
我目前得到的
{"":[
"3",
"6",
"12"
],
"":[
"3",
"6",
"13"
],
"": [
"3",
"7",
"16"
],
"": [
"3",
"7",
"17"
],
"": [
"3",
"8",
"18"
],
"": [
"3",
"8",
"19"
],
"": [
"3",
"9",
"20"
],
"": [
"3",
"9",
"21"
]
}
我想要的json:
{"" :{ "3": {"6": ["12", "13"], "7": ["16", "17"], "8": ["18", "19"], "9": [ "20", "21" ]} }}
请建议一种方法。
提前致谢!
您可以按多列对 SQL 查询结果进行排序,这应该 return 数据按您要查找的顺序排序:
<original_query> + ORDER BY c1, c2, c3
首先,您必须使数据有效 json,如下所示:
var items = [
{
l0: "3",
l1: "6",
l2: "12"
},
{
l0: "3",
l1: "6",
l2: "13"
},
{
l0: "3",
l1: "7",
l2: "16"
},
{
l0: "3",
l1: "7",
l2: "17"
},
{
l0: "3",
l1: "8",
l2: "18"
},
{
l0: "3",
l1: "8",
l2: "19"
},
{
l0: "3",
l1: "9",
l2: "20"
},
{
l0: "3",
l1: "9",
l2: "21"
}
];
然后您可以通过以下方式获得您想要的:
var result = {};
items.forEach(item => {
result[item.l0] = result[item.l0] || {};
result[item.l0][item.l1] = result[item.l0][item.l1] || [];
result[item.l0][item.l1].push(item.l2);
});
console.log(result);
最终结果:
我正在开发一个 angular + nodejs 应用程序,我需要一些来自 sql 的 json 格式的数据。我能够在 json 中获取数据,但我需要将数据以类似树的方式进行分组。有没有办法在 sql、服务器或前端级别执行此操作?
我在table
中的数据我目前得到的
{"":[
"3",
"6",
"12"
],
"":[
"3",
"6",
"13"
],
"": [
"3",
"7",
"16"
],
"": [
"3",
"7",
"17"
],
"": [
"3",
"8",
"18"
],
"": [
"3",
"8",
"19"
],
"": [
"3",
"9",
"20"
],
"": [
"3",
"9",
"21"
]
}
我想要的json:
{"" :{ "3": {"6": ["12", "13"], "7": ["16", "17"], "8": ["18", "19"], "9": [ "20", "21" ]} }}
请建议一种方法。
提前致谢!
您可以按多列对 SQL 查询结果进行排序,这应该 return 数据按您要查找的顺序排序:
<original_query> + ORDER BY c1, c2, c3
首先,您必须使数据有效 json,如下所示:
var items = [
{
l0: "3",
l1: "6",
l2: "12"
},
{
l0: "3",
l1: "6",
l2: "13"
},
{
l0: "3",
l1: "7",
l2: "16"
},
{
l0: "3",
l1: "7",
l2: "17"
},
{
l0: "3",
l1: "8",
l2: "18"
},
{
l0: "3",
l1: "8",
l2: "19"
},
{
l0: "3",
l1: "9",
l2: "20"
},
{
l0: "3",
l1: "9",
l2: "21"
}
];
然后您可以通过以下方式获得您想要的:
var result = {};
items.forEach(item => {
result[item.l0] = result[item.l0] || {};
result[item.l0][item.l1] = result[item.l0][item.l1] || [];
result[item.l0][item.l1].push(item.l2);
});
console.log(result);
最终结果: