Json中値繰返しの判定回数

1514 ワード

/// 
        /// json id      
        /// 
        /// json   
        private static void InitJson(string JsonString)
        {
            JArray objJArray = JsonConvert.DeserializeObject(JsonString);

            List strList = new List();

            foreach (JToken item in objJArray.ToList())
            {
                GetChildId(strList, item);
            }

            string sbstr = "";
            foreach (var item in strList.GroupBy(x => x).Where(x => x.Count() > 1))
            {
                sbstr += ",id " + item.Key + "    " + item.Count() + "  ";
            }
        }

        private static void GetChildId(List strList, JToken item)
        {
            if (item.Type == JTokenType.Array)
            {
                foreach (JToken itemToken in item.ToList())
                {
                    GetChildId(strList, itemToken);
                }
            }
            else
            {
                foreach (JProperty tt in item)
                {
                    if (tt.Name.ToLower() == "id")
                        strList.Add(tt.Value + "");

                    if (tt.Name.ToLower() == "children")
                    {
                        GetChildId(strList, tt.Value);
                    }
                }
            }
        }