为了账号安全,请及时绑定邮箱和手机立即绑定

解析嵌套列表不会下降到级别 3

解析嵌套列表不会下降到级别 3

Go
九州编程 2021-12-07 10:51:37
我有一个 JSON 表示菜单项。一个菜单项可以有一个子菜单项,而子菜单项又可以有另一个子菜单项,依此类推。输入 JSON 通过父 ID 关联菜单项。我试图将其转换为一个模型,其中每个菜单项都有其子菜单项的一部分。子菜单有三层深。我已经设法解析了两个级别,但我不知道为什么没有解析第三个级别。我一直在调试这个问题几个小时。我会很感激一些帮助。menu2.sjon[  {    "category_id": 4,    "category_id_400": "'SCHOO",    "name": "School Supplies",    "parent_id": 2,    "position": 2,    "level": 2,    "status": 1,    "url": "http://www.booksrus.kw/sa-en/school-supplies.html"  },  {    "category_id": 141,    "category_id_400": "'SCHBA",    "name": "School Bags",    "parent_id": 4,    "position": 12,    "level": 3,    "status": 1,    "url": "http://www.booksrus.kw/sa-en/school-supplies/school-bags.html"  },  {    "category_id": 269,    "category_id_400": "'AEP",    "name": "Bags Knapsack with Trolley",    "parent_id": 141,    "position": 1,    "level": 4,    "status": 1,    "url": "http://www.booksrus.kw/sa-en/school-supplies/school-bags/bags-knapsack-with-trolley.html"  }]输出Rootitems:[4           School Supplies>   141           School Bags//Third level should appear here]
查看完整描述

1 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

TryAdd函数中的这个循环很可能是你的问题:


for _, sub := range m.Subs {

    if found := sub.TryAdd(other); found {

        return true

    }

}

sub这个循环中的变量实际上是切片元素的副本。您在那里所做的任何更改都不会保留回存储在切片中的元素。


您应该能够通过不使用元素的副本来解决这个问题,而是通过它的索引来引用它:


for i := range m.Subs {

    if found := m.Subs[i].TryAdd(other); found {

        return true

    }

}


查看完整回答
反对 回复 2021-12-07
  • 1 回答
  • 0 关注
  • 168 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信