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

我有一个 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

]


九州编程
浏览 169回答 1
1回答

largeQ

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    }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go