private JObject ProcessItem(MenuItemsListPart originalItems, JObject item) { var contentItem = GetMenuItemAt(originalItems, item["index"].ToString().Split('-').Select(x => Convert.ToInt32(x)).ToArray()); var children = item["children"] as JArray; if (children != null) { var menuItems = new JArray(); for (var i = 0; i < children.Count; i++) { menuItems.Add(ProcessItem(originalItems, children[i] as JObject)); contentItem["MenuItemsListPart"] = new JObject(new JProperty("MenuItems", menuItems)); } } return(contentItem); }
/// <summary> /// Clone the content items at the specific index. /// </summary> private JObject GetMenuItemAt(MenuItemsListPart menuItems, int[] indexes) { ContentItem menuItem = null; foreach (var index in indexes) { menuItem = menuItems.MenuItems[index]; menuItems = menuItem.As <MenuItemsListPart>(); } var newObj = JObject.Parse(JsonConvert.SerializeObject(menuItem)); if (newObj["MenuItemsListPart"] != null) { newObj["MenuItemsListPart"] = new JObject(new JProperty("MenuItems", new JArray())); } return(newObj); }