基入JavaScriptSerializer 自己写了个 通过json获取特定的值的程序

来源:互联网 发布:rc串联电路实验数据 编辑:程序博客网 时间:2024/05/19 02:20

     本人还是太懒了 懒得打字 用得着的 就拿去吧 !    代码如下 够了    

    /// <summary>
        /// 将JSON反序列化为dictionary
        /// </summary>
        /// <param name="jsonData"></param>
        /// <returns></returns>
        public static Dictionary<string, object> JsonToDictionary(string jsonData)
        {
            //实例化JavaScriptSerializer类的新实例
            JavaScriptSerializer jss = new JavaScriptSerializer();
            try
            {
                //将指定的 JSON 字符串转换为 Dictionary<string, object> 类型的对象
                return jss.Deserialize<Dictionary<string, object>>(jsonData);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }





     string a = "event.name";

            string[] cans = a.Split('.');
            Dictionary<string, object> dic = JsonTools.JsonToDictionary(sb.ToString());

            List<string> tt= Json2DataByString(sb.ToString(),cans,dic );





  public static List<string>  Json2DataByString(string sb,string[] cans,Dictionary<string,object> dic) {
            string tmpStr = "";
            ArrayList list = new ArrayList();
            List<string> tmp=null;

            var query = from d in dic
                        where d.Key == cans[0]
                        select d.Value;
        
            if (query.FirstOrDefault().GetType().ToString().Contains("System.Collections.ArrayList"))
            {
              
                    tmp = new List<string>();
                            
                list = (ArrayList)query.FirstOrDefault();
                for (int i = 0; i < list.Count; i++)
                {

                    dic = (Dictionary<string, object>)list[i];
                    query = from d in dic
                            where d.Key == cans[1]
                            select d.Value;
                    //  Console.WriteLine(query.FirstOrDefault());
                     
                      tmpStr = query.FirstOrDefault().ToString();
                      tmp.Add(tmpStr);
                }
                return tmp;
            }
            else if (query.FirstOrDefault().GetType().ToString().Contains("System.Collections.Generic.Dictionary"))
            {
               
                    tmp = new List<string>();
                
                dic = (Dictionary<string, object>)query.FirstOrDefault();

                query = from d in dic
                        where d.Key == cans[1]
                        select d.Value;

                try
                {
                    dic = (Dictionary<string, object>)query.FirstOrDefault();
                }
                catch (Exception)
                {

                  //  Console.WriteLine(query.FirstOrDefault().ToString());
                    //  return query.FirstOrDefault().ToString();
                    tmpStr = query.FirstOrDefault().ToString();
                    tmp.Add(tmpStr);
                    return tmp;
                }
             //   Console.WriteLine(query.FirstOrDefault().GetType().ToString());
                tmp = new List<string>(cans);
                tmp.RemoveRange(0, cans.Length-1);
                cans = tmp.ToArray();

                return Json2DataByString(sb, cans, dic);

            }
            else {
              
                tmp = new List<string>();
                
             //   Console.WriteLine(query.FirstOrDefault().ToString());
                // return query.FirstOrDefault().ToString();
                tmpStr = query.FirstOrDefault().ToString();
                tmp.Add(tmpStr);
                return tmp;
            }
           
        }
       





0 0
原创粉丝点击