我有一张这样的桌子:
id title parent_id
1 a 0
2 b 0
3 c 1
4 d 2
5 e 1
6 f 3
7 g 3
,我需要制作一个json以发送到前端。我不知道如何从我的表中制作此json。 以下是有关我的目标和代码的其他信息: 节点类型:
type Node struct {
Id int64 `json:"id"'
Title string `json:"title"`
ParentId int64 `json:"parent_id"`
Children []Node `json:"children"`
}
我正在使用sqlx从数据库读取数据到切片
我需要一个像这样的json:
[
{
"id" : 1,
"title" : "a",
"parent_id" : 0,
"children" : [
{
"id" : 3,
"title" : "c",
"parent_id" : 1,
"children" .....
}
]
},
.
.
.
]
已经有一个与我的问题类似的问题,但是不同之处在于,我是从mysql表而不是从控制台中读取节点,并且还需要将树编组为json
答案 0 :(得分:0)
var items = select * from tbl order by parent_id;
Node.addChild = n=>this.children.add(n);
var root= new Node({Id:0, Parent:null, Title:'Root',Children:[]);
add(root, items, 0,0)
function add(tree,items, depth){
if(depth>100){
throw 'something';
}
var itemsOnThisLevel = items.where(item.parent_id==tree.id)
foreach(var item in itemsOnThisLevel){
var n = new Node(item);
tree.add(n);
add(n, items, depth+1);
}
}