美文网首页
json转hashtable

json转hashtable

作者: 宗宣先生 | 来源:发表于2021-05-31 21:23 被阅读0次

            /// <summary>

            /// 处理json

            /// </summary>

            /// <param name="json">json字符串</param>

            /// <returns></returns>

            private Hashtable JsonToHashTable(string json)

            {

                Hashtable ht = new Hashtable();

                string jsonStr = json.Substring(1, json.Length - 2);//去掉首尾{}

                jsonStr = jsonStr.Replace("\"", "").Replace("'", "").Replace(" ", "");//去掉所有" '

                string[] jsonArr = SplitJson(jsonStr,",");

                string str = null;

                for (int i = 0; i < jsonArr.Length; i++)

                {

                    str = jsonArr[i];

                    string[] arr = SplitJson(str,":");

                    //判断是否包含[ ]

                    if (arr[1].Contains("["))//做数组处理

                    {

                        List<Hashtable> subHtl = JsonToHashTableList(arr[1]);

                        ht.Add(arr[0], subHtl);

                    }

                    else if (arr[1].Contains("{"))//做json处理

                    {

                        Hashtable subHt = JsonToHashTable(arr[1]);

                        ht.Add(arr[0], subHt);

                    }

                    else

                    {

                        ht.Add(arr[0], arr[1]);

                    }

                }

                return ht;

            }

            /// <summary>

            /// 处理json数组

            /// </summary>

            /// <param name="json">json数组字符串</param>

            /// <returns></returns>

            private List<Hashtable> JsonToHashTableList(string json)

            {

                List<Hashtable> htl = new List<Hashtable>();

                string jsonStr = json.Substring(1, json.Length - 2);//去掉首尾[]

                string[] jsonArr = SplitJson(jsonStr,",");

                for (int j = 0; j < jsonArr.Length; j++)

                {

                    Hashtable ht = JsonToHashTable(jsonArr[j]);

                    htl.Add(ht);

                }

                return htl;

            }

            /// <summary>

            /// 依据传入的符号分割字符串

            /// </summary>

            /// <param name="json"></param>

            /// <param name="code">冒号则只分割一次,逗号无视[],{}中的逗号分割</param>

            /// <returns></returns>

            private string[] SplitJson(string json,string code)

            {

                List<string> res = new List<string>();

                if (code == ",")

                {

                    //无视[],{}中的逗号分割

                    string pattern = @"(?<=\{|\[.*),(?=.*\}|\])";

                    string result = Regex.Replace(json, pattern, "####");//把[ ]和{ }中的逗号排除

                    string[] arr = result.Split(',');

                    string temp = null;

                    for (int i = 0; i < arr.Length; i++)

                    {

                        temp = arr[i].Replace("####", ",");//恢复[ ]和{ }中的逗号

                        res.Add(temp);

                    }

                }

                else if(code == ":")

                {

                    //冒号则只分割一次

                    int index = json.IndexOf(code);

                    res.Add(json.Substring(0, index));

                    res.Add(json.Substring(index + 1, json.Length - index - 1));

                }

                return res.ToArray();

            }

    相关文章

      网友评论

          本文标题:json转hashtable

          本文链接:https://www.haomeiwen.com/subject/aifisltx.html