数据设置为json与组

时间:2017-09-15 12:29:24

标签: sql angularjs json node.js tedious

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

我在表格中的数据

Data I have in 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" ]} }}

请建议一种方法来做到这一点。

提前致谢!

2 个答案:

答案 0 :(得分: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);

最终结果:

enter image description here

答案 1 :(得分:0)

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

<original_query> + ORDER BY c1, c2, c3