数据组为 json
Posted
技术标签:
【中文标题】数据组为 json【英文标题】:data set to json with group 【发布时间】:2018-02-24 15:35:21 【问题描述】:我正在开发一个 angular + nodejs 应用程序,我需要一些 json 格式的 sql 数据。我能够以 json 格式获取数据,但我需要将数据以树状方式分组。有没有办法在 sql、server 或前端级别做到这一点?
表格中的数据
我目前得到的
"":[
"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" ]
请提出一种方法来做到这一点。
提前致谢!
【问题讨论】:
你能发布一个现在如何返回的例子吗? @kauffee000 已更新样本数据 这似乎不是有效的 JSON。我将建议循环并基于 JSON 响应构建您自己的对象。 @kauffee000 我刚刚制作了该数据,实际数据看起来与此类似。你能建议building your own object
吗?有这个库吗?
我只是循环并用 javascript 做一个小转换函数。但是您想要的以及作为示例发布的内容不是有效的 Javascript 对象或有效的 JSON。为什么必须是那种格式?
【参考方案1】:
您可以按多列对 SQL 查询结果进行排序,这应该按照您要查找的顺序返回数据:
<original_query> + ORDER BY c1, c2, c3
【讨论】:
顺序不是问题,我可以对它进行相应的排序,但我想要一些方法来对它进行分组,就像我在 json 中显示的那样。可能在 SQL 中是不可能的,但我只是想检查一下。【参考方案2】:首先,您必须将数据作为有效的 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);
最终结果:
【讨论】:
以上是关于数据组为 json的主要内容,如果未能解决你的问题,请参考以下文章
json:无法将字符串解组为 MyMap.map 类型的 Go 值
恐慌:json:无法将数组解组为 main.Structure 类型的 Go 值
当 JSON 字段键是日期时,如何将 JSON 对象解组为 Golang 结构?