数据设置为 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);

最终结果: