private static SingleClickButton GetSingleButtonFromJsonObject(Dictionary<string, object> objs)
 {
     var sb = new SingleClickButton()
     {
         key = objs["key"] as string,
         name = objs["name"] as string,
         type = objs["type"] as string
     };
     return sb;
 }
        public JsonResult syncMenuOnline(List<List<_poseMenu>> menus)
        {
            WxJsonResult result = new WxJsonResult();
            ButtonGroup bg = new ButtonGroup();
            IList<BaseButton> topList = new List<BaseButton>();
            IList<SingleButton> subList = new List<SingleButton>();
            for (int i = 0; i < menus.Count; i++)
            {
                List<_poseMenu> list = menus[i].OrderBy(m => m.sort).ToList();
                //过滤掉不符合条件的

                for (int x = list.Count - 1; x >= 1; x--)
                {
                    if (string.IsNullOrEmpty(list[x].title))
                        list.RemoveAt(x);
                    if (string.IsNullOrEmpty(list[x].key) && string.IsNullOrEmpty(list[x].url))
                        list.RemoveAt(x);
                }
                if (!string.IsNullOrEmpty(list[0].title))
                {
                    if (list.Count() == 1) //没有子菜单
                    {
                        if (!string.IsNullOrEmpty(list.First().key))//click
                        {
                            SingleClickButton topSingleButton = new SingleClickButton();
                            topSingleButton.name = list.First().title;
                            topSingleButton.key = list.First().key;
                            topList.Add(topSingleButton);
                        }
                        else if (!string.IsNullOrEmpty(list[0].url))//view
                        {
                            SingleViewButton topSingleButton = new SingleViewButton();
                            topSingleButton.name = list.First().title;
                            topSingleButton.url = list.First().url;
                            topList.Add(topSingleButton);
                        }
                    }
                    else//有子菜单
                    {
                        subList = new List<SingleButton>();
                        SubButton topButton = new SubButton(list.First().title);
                        list.Remove(list.First());
                        for (int j = 0; j < list.Count(); j++)
                        {
                            if (!string.IsNullOrEmpty(list[j].url))//view
                            {
                                SingleViewButton sub = new SingleViewButton();
                                sub.name = list[j].title;
                                sub.url = list[j].url;
                                subList.Add(sub);
                            }
                            else if (!string.IsNullOrEmpty(list[j].key))//click
                            {
                                SingleClickButton sub = new SingleClickButton();
                                sub.name = list[j].title;
                                sub.key = list[j].key;
                                subList.Add(sub);
                            }
                        }
                        if (subList.Count > 0)
                        {
                            topButton.sub_button.AddRange(subList);
                            topList.Add(topButton);
                        }
                    }
                }
            }
            bg.button.AddRange(topList);
            if (bg.button.Count() > 0)
                result = WeChartAPI.CreateMenu(GetToken(), bg);
            return Json(result, JsonRequestBehavior.AllowGet);
        }