dataTable和json相互转换

32 篇文章 0 订阅
21 篇文章 0 订阅

        /// <summary>
        /// JsonAndDateTable 的摘要说明
        /// </summary>
        public  class JsonAndDateTable
        {
            /// <summary>
            /// 根据Json返回DateTable,JSON数据格式如:
            /// {table:[{column1:1,column2:2,column3:3},{column1:1,column2:2,column3:3}]}
            /// </summary>
            /// <param name="strJson">Json字符串</param>
            /// <returns></returns>
            public static DataTable JsonToDataTable(string strJson)
            {
                //取出表名
                Regex rg = new Regex(@"(?<={)[^:]+(?=:\[)", RegexOptions.IgnoreCase);
                string strName = rg.Match(strJson).Value;
                DataTable tb = null;
                //去除表名
                strJson = strJson.Substring(strJson.IndexOf("[") + 1);
                strJson = strJson.Substring(0, strJson.IndexOf("]"));
                //获取数据
                rg = new Regex(@"(?<={)[^}]+(?=})");
                MatchCollection mc = rg.Matches(strJson);
                for (int i = 0; i < mc.Count; i++)
                {
                    string strRow = mc[i].Value;
                    string[] strRows = strRow.Split(',');
                    //创建表
                    if (tb == null)
                    {
                        tb = new DataTable();
                        tb.TableName = strName;
                        foreach (string str in strRows)
                        {
                            DataColumn dc = new DataColumn();
                            string[] strCell = str.Split(':');
                            dc.ColumnName = strCell[0].ToString();
                            tb.Columns.Add(dc);
                        }
                        tb.AcceptChanges();
                    }
                    //增加内容
                    DataRow dr = tb.NewRow();
                    for (int r = 0; r < strRows.Length; r++)
                    {
                        dr[r] = strRows[r].Split(':')[1].Trim().Replace(",", ",").Replace(":", ":").Replace("\"", "");
                    }
                    tb.Rows.Add(dr);
                    tb.AcceptChanges();
                }
                return tb;
            }


            /// <summary>
            /// 根据DataTable返回JSON数据格式如:
            /// {table:[{column1:1,column2:2,column3:3},{column1:1,column2:2,column3:3}]}
            /// </summary>
            /// <param name="tb">需要转换的表</param>
            /// <returns></returns>
            public static string DateTableToJson(string TableName,DataTable tb)
            {
                if (tb == null || tb.Rows.Count == 0)
                {
                    return "";
                }
                string strName = TableName;
                /*
                string strName = tb.TableName;
                if (strName.Trim().Length == 0)
                {
                    strName = "table";
                }*/
                StringBuilder sbJson = new StringBuilder();
                sbJson.Append("{");
                sbJson.Append("\"" + strName + "\":[");
                Hashtable htColumns = new Hashtable();
                for (int i = 0; i < tb.Columns.Count; i++)
                {
                    htColumns.Add(i, tb.Columns[i].ColumnName.Trim());
                }
                for (int j = 0; j < tb.Rows.Count; j++)
                {
                    if (j != 0)
                    {
                        sbJson.Append(",");
                    }
                    sbJson.Append("{");
                    for (int c = 0; c < tb.Columns.Count; c++)
                    {
                        sbJson.Append(htColumns[c].ToString() + ":\"" + tb.Rows[j][c].ToString().Replace(",", ",").Replace(":", ":").Replace("\r\n", "<br />") + "\",");
                    }
                    sbJson.Append("index:" + j.ToString()); //序号
                    sbJson.Append("}");
                }
                sbJson.Append("]}");
                return sbJson.ToString();
            }
            /// <summary>
            /// 文本符号转为Html代码
            /// </summary>
            /// <param name="str">文本符号</param>
            /// <returns>Html代码(&#+assicl码)</returns>
            public static string TextToHtml(string str)
            {
                str = str.Replace("&", "&");
                str = str.Replace(" ", " ");
                str = str.Replace("<", "<");
                str = str.Replace(">", ">");
                str = str.Replace("\r\n", "<br />");
                str = str.Replace("\n", "<br />");
                str = str.Replace("\"", """);
                str = str.Replace("'", "'");
                str = str.Replace(":", ":");
                str = str.Replace(",", ",");


                return str;
            }
        }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值