3

我正在开发一个 angular + nodejs 应用程序,我需要一些来自 sql 的 json 格式的数据。我能够以 json 格式获取数据,但我需要将数据以树状方式分组。有没有办法在 sql、服务器或前端级别执行此操作?

我在表中的数据

我在表中的数据


我目前得到的

{"":[
    "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" ]} }}

请提出一种方法来做到这一点。

提前致谢!

4

2 回答 2

1

首先,您必须将数据作为有效的 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);

最后结果:

在此处输入图像描述

于 2017-09-15T14:08:31.733 回答
0

您可以按多列对 SQL 查询结果进行排序,这应该按照您要查找的顺序返回数据:

<original_query> + ORDER BY c1, c2, c3
于 2017-09-15T12:38:56.597 回答