page contents

C# json转hashtable

本文讲述了C# json转hashtable!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

attachments-2022-10-aoUAJ9Ik635743f0ef913.png

本文讲述了C# json转hashtable!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

前端使用json很方便,传到后端有时需要hashtable,所以记录以下代码

/// <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();

        }

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

长按或扫描下方二维码,免费获取 Python公开课和大佬打包整理的几百G的学习资料,内容包含但不限于Python电子书、教程、项目接单、源码等等

attachments-2022-10-kwwbZ9WG6347756cbf77c.jpg




  • 发表于 2022-10-25 10:03
  • 阅读 ( 365 )
  • 分类:C/C++开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1478 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章