我有一個 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條經驗 獲得超8個贊
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
}
}
- 1 回答
- 0 關注
- 196 瀏覽
添加回答
舉報
0/150
提交
取消