数据组为 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 错误,无法将对象解组为 Go 值

json:无法将字符串解组为 MyMap.map 类型的 Go 值

恐慌:json:无法将数组解组为 main.Structure 类型的 Go 值

当 JSON 字段键是日期时,如何将 JSON 对象解组为 Golang 结构?

如何在 Akka HTTP 中将“text/plain”解组为 JSON

JSON序列化以元组为键的字典